Split the CI build and test matrix back across GitHub Actions and the managed pool - #4158
Open
marcschier wants to merge 1 commit into
Open
Split the CI build and test matrix back across GitHub Actions and the managed pool#4158marcschier wants to merge 1 commit into
marcschier wants to merge 1 commit into
Conversation
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
Contributor
There was a problem hiding this comment.
🟢 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) fromadotoactions. - Flip the matching GitHub Actions switch in
.github/workflows/buildandtest.yml(env.CI_BUILD_BACKEND) fromadotoactions. - Update
docs/DeveloperGuide.mdto 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.
cristipogacean
approved these changes
Aug 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Flips both halves of the CI backend switch from
adoback toactions, so the workload is split across GitHub Actions and the Azure DevOpsnetstandardManaged 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:
azure-pipelines.ymlparameters.ciBuildBackendadoactions.github/workflows/buildandtest.ymlenv.CI_BUILD_BACKENDadoactionsResulting split
build-all-tfm-windows+build-all-tfm-linuxnet10.0,net48)net48+net10.0fast PR legsThe 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 theFast PR teststage, which carries noScheduledBuild/AdoOwnsMatrixcondition. 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
ciBuildBackendparameter and as a third bullet in the "deliberately not covered by the switch" list in the developer guide.Behavioural note
Under
actionsthe Azurenet10.0fast-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 firstCoverage Release (net10.0)run after merge is worth a look.Also in this PR
Comment and documentation drift from when
adowas the default:azure-pipelines.yml/buildandtest.yml— the(default)marker moved toactions, 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 showsactionsas 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
discoverbackend resolution formasterandmaster378, confirmingghOwnsBuildis now true on both and thatmaster378/develop/*remain unaffected.docs/DeveloperGuide.md— defaults table, the two-system summary, and the new bullet recording that the coverage gate is exempt from the switch.