Keep MSBuild cache seeded after main merges#10180
Merged
Merged
Conversation
Seed Debug and Release cache universes after main merges, fix detached Windows path matching, and document cache validation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3bb98fb9-c4bd-48ab-b6e1-1eced102c7d7
Contributor
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Updates the Azure Pipelines workflow and developer documentation to keep MSBuildCache entries fresher by seeding caches on main merges (Debug + Release), while retaining nightly builds as a fallback.
Changes:
- Enable
mainbranch CI trigger with path exclusions to avoid unnecessary runs. - Add a dedicated
msbuild_cache_seedstage that seeds MSBuildCache for Debug/Release on trustedmainCI. - Update docs and build properties to reflect cache universes per configuration and correct rooted path exclusions.
Show a summary per file
| File | Description |
|---|---|
| docs/dev-guide.md | Documents new cache seeding behavior and local validation flags. |
| azure-pipelines.yml | Adds main CI trigger + dedicated cache seed stage; adjusts build stage conditions. |
| Directory.Build.props | Splits cache universe by configuration; fixes detached-process exclusions to be rooted. |
Review details
- Files reviewed: 3/3 changed files
- Comments generated: 4
- Review effort level: Low
Evangelink
enabled auto-merge (squash)
July 23, 2026 18:07
Quote cache path arguments and clarify which main merges trigger cache seeding. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3bb98fb9-c4bd-48ab-b6e1-1eced102c7d7
Keep the batched main-merge seed stage as the only remote cache publisher so scheduled and manual canary builds cannot race it. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3bb98fb9-c4bd-48ab-b6e1-1eced102c7d7
Allow XLF-only main merges to trigger the sole writable MSBuild cache seed stage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3bb98fb9-c4bd-48ab-b6e1-1eced102c7d7
0101
approved these changes
Jul 23, 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.
MSBuildCache entries were only refreshed nightly, so shared build-input changes on
mainleft PR builds with a completely stale cache. Debug and Release also shared an immutable cache universe, causing publication collisions.This change adds a batched
mainmerge seed stage for both configurations while retaining the nightly fallback. It isolates Debug and Release cache universes, fixes the rooted Windows detached-access exclusion, and disables warnings-as-errors only for cache builds where allowlisted detached telemetry access is intentionally reported as a warning. The regular Arcade build remains strict and authoritative.A clean
MSTest.slnfpopulation followed by a cache build produced 158/158 hits and reduced wall time from 142.71 seconds to 30.91 seconds (78%). XML/YAML parsing, markdownlint, andgit diff --checkcompleted successfully.