Skip to content

Use MSBuildCache build with Arcade fallback#10196

Open
Evangelink wants to merge 5 commits into
mainfrom
dev/amauryleve/msbuild-cache-fallback
Open

Use MSBuildCache build with Arcade fallback#10196
Evangelink wants to merge 5 commits into
mainfrom
dev/amauryleve/msbuild-cache-fallback

Conversation

@Evangelink

Copy link
Copy Markdown
Member

Summary

  • use successful MSBuildCache graph-build outputs directly for the Windows test steps
  • clean partial cache outputs and run the regular Arcade build when the cache build fails or is skipped
  • align cache seed/consumer properties and document the fallback behavior

Upstream tracking

Validation

  • parsed azure-pipelines.yml successfully
  • parsed every inline PowerShell block successfully
  • verified the cache success, failure, and skipped paths are wired to the regular build condition

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: bec4a34f-864a-4726-9721-65deecab2682
Copilot AI review requested due to automatic review settings July 24, 2026 11:35

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.

Pull request overview

Uses MSBuildCache outputs directly in Windows CI, with Arcade fallback behavior and documentation.

Changes:

  • Align cache seed and consumer properties.
  • Track cache success and clean failed outputs.
  • Skip Arcade builds after cache success.
Show a summary per file
File Description
azure-pipelines.yml Implements cached-build reuse and fallback logic.
docs/dev-guide.md Documents cache behavior and local validation.

Review details

Comments suppressed due to low confidence (1)

azure-pipelines.yml:425

  • Skipping CIBuild.cmd also skips the repository bootstrap that installs the WASI workloads. build.ps1:105-107 calls eng/restore-toolset.ps1, but the direct msbuild.ps1 path does not; the newly added -prepareMachine only stops build processes on exit (tools.ps1:756-759). The Debug acceptance suite has always-on dotnet build -r wasi-wasm tests that assert exit code 0, so cache-success jobs will hit NETSDK1147 on clean agents. Run the custom toolset/workload bootstrap independently before tests rather than relying on the skipped Arcade build.
          name: Build
          displayName: Build
          condition: and(succeeded(), ne(variables['MSBuildCacheBuildSucceeded'], 'true'))
  • Files reviewed: 2/2 changed files
  • Comments generated: 2
  • Review effort level: Medium

Comment thread azure-pipelines.yml
Comment thread azure-pipelines.yml
@Evangelink
Evangelink enabled auto-merge (squash) July 24, 2026 13:22
@Evangelink Evangelink added the state/needs-review Awaiting review from the team. label Jul 24, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: bec4a34f-864a-4726-9721-65deecab2682
Copilot AI review requested due to automatic review settings July 24, 2026 13:27

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.

Review details

  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread azure-pipelines.yml
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: bec4a34f-864a-4726-9721-65deecab2682
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: bec4a34f-864a-4726-9721-65deecab2682
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: bec4a34f-864a-4726-9721-65deecab2682
Copilot AI review requested due to automatic review settings July 24, 2026 14:14

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.

Review details

  • Files reviewed: 4/4 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread .github/workflows/markdownlint.yml
@github-actions

Copy link
Copy Markdown
Contributor

Build failure analysis

Affected legs: Windows Release, Windows Debug
Error: CS0122'SlowTestThresholdState' is inaccessible due to its protection level
Location: src/Platform/Microsoft.Testing.Platform/OutputDevice/Terminal/SilenceDrivenHeartbeatRenderer.cs line 29, in project Microsoft.Testing.Platform.TerminalReporterContract.UnitTests

Root cause

SilenceDrivenHeartbeatRenderer.cs was refactored (in this PR) to replace the manual Dictionary<long, long> backoff tracking with the new SlowTestThresholdState type. However, TerminalReporterContract.props — which enumerates the closed set of files compiled by the standalone contract test project — was not updated to include SlowTestThresholdState.cs.

The contract test project (Microsoft.Testing.Platform.TerminalReporterContract.UnitTests) references Microsoft.Testing.Platform and can see SlowTestThresholdState through that reference, but the type is internal sealed, so the compiler rejects the usage with CS0122 instead of CS0246.

Fix

Add SlowTestThresholdState.cs to TerminalReporterContract.props (before TargetFrameworkParser.cs):

    <TerminalReporterContractSource Include="$(_TerminalContractPlatform)\OutputDevice\SlowTestThresholdState.cs" />
    <TerminalReporterContractSource Include="$(_TerminalContractPlatform)\OutputDevice\TargetFrameworkParser.cs" />

This entry is shown in the PR diff as an intended change to TerminalReporterContract.props, but is absent from the file at the merge SHA.

🤖 Automated content by GitHub Copilot. Generated by the Build Failure Analysis workflow. · sonnet46 67.1 AIC · ⌖ 5.3 AIC · ⊞ 8K · [◷]( · )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state/needs-review Awaiting review from the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants