Skip to content

Prepare Blazor workloads before dispatching to Helix - #5326

Merged
LoopedBard3 merged 2 commits into
dotnet:mainfrom
LoopedBard3:loopedbard3-wasm-publish-failure
Sep 30, 2026
Merged

LoopedBard3 merged 2 commits into
dotnet:mainfrom
LoopedBard3:loopedbard3-wasm-publish-failure

Conversation

@LoopedBard3

Copy link
Copy Markdown
Member

Summary

Prepare wasm-tools once in the SDK correlation payload, then prevent Blazor work items from installing or uninstalling that shared workload. Application restore, publish, and size measurement remain on Helix.

  • Add a PreparePayloadWorkItem that uses the payload's SDK and NuGet.config, retaining --skip-manifest-update.
  • Pass --has-workload --readonly-dotnet to all eight Blazor pre-commands and --readonly-dotnet to their post-commands.
  • Preserve the Localized non-AOT mode with WasmNativeWorkload=false and explicitly enable its AOT mode. A comment explains why Localized selects its mode in the project rather than separate scenario scripts.
  • Add MSBuild command-evaluation and Python helper regression coverage, plus lifecycle documentation.

Root cause

In performance-ci build 1614779, the Minimum Blazor work item partially uninstalled wasm-tools from the shared SDK: deletion failed because MonoTargetsTasks.dll was locked. The following Pizza AOT work item treated the remaining pack as already installed, but its Sdk.props had been removed. Restore consequently failed with an empty MonoTargetsTasksAssemblyPath.

The same sequence occurred on main build 1613321. This failure is independent of #5324.

Provisioning before dispatch and eliminating per-work-item workload mutation removes this cross-test corruption path.

Localized AOT behavior correction

The existing _PublishArgsWithAOT was item metadata referenced as an MSBuild property, so RunAOTCompilation=true was silently omitted. This change passes the property directly. Localized AOT size results may change because the scenario now actually performs AOT compilation.

Standalone scenario scripts retain their existing workload-management defaults.

Validation

  • 54 targeted tests passed across test_blazor_workload.py, test_run_performance_job.py, and test_wasm_coreclr_r2r.py.
  • Executed the real Helix SDK PreparePayloadWorkItems target using the exact failing CI SDK, 11.0.100-rtm.26473.115; workload installation succeeded.
  • Relocated the prepared payload and successfully published the Minimum Template, ran read-only cleanup, then published Pizza AOT and ran read-only cleanup. The MonoTargets SDK props remained intact.
  • Published Localized in both modes: non-AOT produced zero AOT bitcode files; AOT produced 49. Both produced published WASM assets without modifying the shared MonoTargets SDK props.
  • Full Helix SDK evaluation confirmed one preparation item and read-only flags on all eight work items.

An initial Pizza AOT attempt hit a local Windows native-compiler path-length limit; the same scenario passed from a shorter validation path.

Draft follow-up

Windows/Linux Helix execution across the supported SDK channels is still outstanding. Unix command generation was evaluated locally, but no Linux-host publish was run.

Parker Bibus and others added 2 commits September 28, 2026 11:12
Install wasm-tools once into the SDK correlation payload and make all Blazor scenario workload helpers read-only. Keep publish and measurement on Helix, avoiding partial workload uninstalls that corrupt subsequent work items.

Preserve non-AOT localized publishing and pass the localized AOT argument directly instead of treating item metadata as a property. Add real MSBuild command-evaluation and Python helper regression coverage and document the lifecycle.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings September 28, 2026 20:39
@LoopedBard3 LoopedBard3 self-assigned this Sep 28, 2026
@LoopedBard3
LoopedBard3 marked this pull request as ready for review September 28, 2026 22:23

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.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@LoopedBard3
LoopedBard3 enabled auto-merge (squash) September 29, 2026 19:54

@DrewScoggins DrewScoggins left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@LoopedBard3
LoopedBard3 merged commit 8da21ca into dotnet:main Sep 30, 2026
79 checks passed
@LoopedBard3
LoopedBard3 deleted the loopedbard3-wasm-publish-failure branch September 30, 2026 17:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants