Skip to content

Split the CI build and test matrix back across GitHub Actions and the managed pool - #4158

Open
marcschier wants to merge 1 commit into
masterfrom
marcschier/ci-split-backend
Open

Split the CI build and test matrix back across GitHub Actions and the managed pool#4158
marcschier wants to merge 1 commit into
masterfrom
marcschier/ci-split-backend

Conversation

@marcschier

Copy link
Copy Markdown
Collaborator

Description

Flips both halves of the CI backend switch from ado back to actions, so the workload is split across GitHub Actions and the Azure DevOps netstandard Managed DevOps Pool instead of being concentrated on the managed pool.

The switch is deliberately checked into source in two places that must always be flipped together, and this PR moves both:

File Setting Before After
azure-pipelines.yml parameters.ciBuildBackend ado actions
.github/workflows/buildandtest.yml env.CI_BUILD_BACKEND ado actions

Resulting split

Work GitHub Actions Azure Pipelines (managed pool)
All-TFM solution builds build-all-tfm-windows + build-all-tfm-linux two-TFM PR gate (net10.0, net48)
Test matrix ubuntu, every test project Windows net48 + net10.0 fast PR legs
Native AoT ubuntu Schedule/Manual only
macOS always (no managed-pool macOS image)
Coverage gate always

The coverage gate is not affected

This is the one thing worth reviewing carefully. The per-(framework, configuration) Coverage <configuration> (<framework>) jobs are the required status checks for the branch ruleset, and they live in the Fast PR test stage, which carries no ScheduledBuild / AdoOwnsMatrix condition. They therefore keep running and keep gating every pull request under either setting — a required check that stopped reporting would leave PRs permanently "Expected — waiting for status to be reported".

This is now stated explicitly, both as a comment on the ciBuildBackend parameter and as a third bullet in the "deliberately not covered by the switch" list in the developer guide.

Behavioural note

Under actions the Azure net10.0 fast-PR leg is Windows-only again, so the merged Cobertura report no longer contains a Linux fragment — the same test projects, executed on one OS instead of two. The enforced floor is 70 % against a ~73.6 % baseline, so there is headroom, but the first Coverage Release (net10.0) run after merge is worth a look.

Also in this PR

Comment and documentation drift from when ado was the default:

  • azure-pipelines.yml / buildandtest.yml — the (default) marker moved to actions, and the "ADO now owns …" / "exactly as before" phrasings were rewritten to describe both settings symmetrically rather than as a migration.
  • docs/DeveloperGuide.md — the Which system runs what table now shows actions as the default, and the two-system summary at the top of Continuous integration was corrected: Azure Pipelines owns the fast PR legs, the per-framework matrices and the coverage gate; GitHub Actions owns the all-TFM builds, the ubuntu matrix and AoT.

No product code, build configuration or test code is touched.

Related Issues

No tracking issue; this is CI infrastructure work requested directly. It adjusts the switch introduced in #4122.

Checklist

  • I have signed the CLA and read the CONTRIBUTING doc.
  • I have added tests that prove my fix is effective or that my feature works and increased code coverage.
    • No product code changed, so there are no unit tests to add. The change was verified by parsing both pipeline files and by simulating the discover backend resolution for master and master378, confirming ghOwnsBuild is now true on both and that master378 / develop/* remain unaffected.
  • I have added all necessary documentation.
    • docs/DeveloperGuide.md — defaults table, the two-system summary, and the new bullet recording that the coverage gate is exempt from the switch.
  • I have verified that my changes do not introduce (new) build or analyzer warnings.
    • YAML and Markdown only; no compilation involved.
  • I ran all tests locally using the UA.slnx solution against at least .net framework and .net 10, and all passed.
    • Not applicable — no product code changed. The CI matrices this PR re-routes are themselves the verification.
  • I fixed all failing and flaky tests in the CI pipelines and all CodeQL warnings.
  • I have addressed all PR feedback received.

Flips both halves of the CI backend switch from 'ado' to 'actions', so the
all-TFM solution builds, the ubuntu test matrix and Native AoT run on GitHub
Actions again while Azure Pipelines runs the fast pull-request test legs on
the netstandard Managed DevOps Pool. Both switches must always be flipped
together.

The coverage gate is deliberately unaffected: it lives in the always-on
'Fast PR test' stage, not in a stage gated on the switch, because it is the
required status check.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26aa55a2-5731-4a4c-b61c-df2f7a785eca
Copilot AI review requested due to automatic review settings August 1, 2026 10:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Ready to approve

The changes are limited to consistent switch flips plus documentation/comment updates, with no product/build logic modifications beyond the intended backend default change.

This review doesn't count toward merge requirements. Sign up for the private preview to control whether Copilot approvals count.

Pull request overview

Switches the CI “backend ownership” toggle back to actions (split workload between GitHub Actions and the Azure DevOps managed pool) and updates the corresponding documentation/comments so both halves of the switch remain aligned.

Changes:

  • Flip the default CI backend in azure-pipelines.yml (parameters.ciBuildBackend) from ado to actions.
  • Flip the matching GitHub Actions switch in .github/workflows/buildandtest.yml (env.CI_BUILD_BACKEND) from ado to actions.
  • Update docs/DeveloperGuide.md to reflect the new default split and explicitly call out that the Azure Pipelines coverage gate remains always-on.
File summaries
File Description
docs/DeveloperGuide.md Updates CI system responsibility summary, switch defaults, and clarifies the coverage gate is exempt from the backend toggle.
azure-pipelines.yml Sets ciBuildBackend default to actions and updates explanatory comments/display text accordingly.
.github/workflows/buildandtest.yml Sets CI_BUILD_BACKEND default to actions and updates the switch description comments to match.
Review details
  • Files reviewed: 3/3 changed files
  • Comments generated: 0
  • Review effort level: Lite

We're testing this review assessment. Please use 👍 or 👎 to tell us if it's correct.

@marcschier marcschier added the ready Ready to merge once CI Passes label Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready Ready to merge once CI Passes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants