Fix aspnetcore perf-build CI failures found in first test runs - #5255
Merged
LoopedBard3 merged 2 commits intoJul 8, 2026
Merged
Conversation
Four fixes validated end-to-end on internal run 3015786 (all stages green, nupkgs uploaded to BCS): - Submodules: check out the aspnetcore resource with submodules so restore/build stops failing on missing submodule files. - SHA macro: expose resources.repositories.aspnetcore.version via a pipeline variable (_AspNetCoreSha) and reference $(_AspNetCoreSha) in the RegisterBuild and UploadArtifacts steps; the raw resources.* macro is not expanded inside the inline scripts. - Windows: reunify the per-arch Windows jobs into one sequential Windows_build job (x64 native first, then x86/arm64 with -noBuildNative), matching ci-public.yml, and repoint the upload dispatcher accordingly. - Linux arm64 NativeAOT cross-link: run only the arm64 build.sh step in the dotnet cross prereq container (azurelinux-3.0-net11.0-cross-arm64, which bundles clang + /crossrootfs/arm64) via a step target, with -p:CrossBuild=true and ROOTFS_DIR. The plain 1es-ubuntu-2204 image has no arm64 sysroot, so the newer aspnetcoretools NativeAOT tool failed to link. Mirrors aspnetcore ci-public.yml's arm64 leg. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR applies follow-up fixes to the aspnetcore perf-build Azure DevOps pipeline hosted in dotnet/performance, addressing failures discovered during initial internal test runs and ensuring BCS upload paths use the triggering aspnetcore commit SHA.
Changes:
- Enable
submodules: trueonaspnetcorecheckouts so builds no longer fail due to missing vendored submodule sources. - Capture the triggering
aspnetcoreSHA via a runtime expression (_AspNetCoreSha) and use it for RegisterBuild/UploadArtifacts BCS paths. - Reunify Windows x64/x86/arm64 into a single sequential job and update upload job dependencies; run the Linux arm64 build step in a cross-compile prereqs container with an arm64 sysroot.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| eng/pipelines/upload-build-artifacts-jobs.yml | Repoints all aspnetcore_*_windows upload branches to depend on the unified Windows_build job. |
| eng/pipelines/aspnetcore-perf-build.yml | Adds _AspNetCoreSha runtime variable and defines a cross-arm64 container resource; threads SHA to register/upload stages. |
| eng/pipelines/aspnetcore-perf-build-jobs.yml | Adds submodule checkout, reunifies Windows into one job, and runs the Linux arm64 build step in the cross-arm64 container with cross-build flags/env. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Member
Author
|
Cancelled Performance-CI run as this PR doesn't impact the performance runs at all. |
Open
3 tasks
A repository-resource CI trigger (resources.repositories with a `trigger:`) surfaces as Build.Reason == IndividualCI, not ResourceTrigger. The stage gates only accepted ResourceTrigger|Manual, so aspnetcore-triggered runs queued but skipped every stage (build did nothing). Accept IndividualCI instead. Safe because self has trigger: none / pr: none, so IndividualCI can only originate from the aspnetcore resource trigger. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Member
Author
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.
Follow-up fixes for the aspnetcore perf-build pipeline (added in #5243) after the first internal test runs surfaced failures. All four fixes are validated end-to-end on internal build 3015786 — every stage green (Register Build, Build, Upload Artifacts to BCS) and all 5 per-RID runtime-pack nupkgs uploaded to the Build Cache Service.
Fixes
submodules: trueon all three build jobs, so restore/build no longer fails on missing submodule files (CS2001).resources.repositories.aspnetcore.versionis not expanded inside the inline Azure CLI scripts. Expose it via a pipeline variable_AspNetCoreShaand reference$(_AspNetCoreSha)in the RegisterBuild and UploadArtifacts steps (this drives the BCS{sha}path).Windows_buildjob (x64 native first, then x86/arm64 with-noBuildNative), matchingci-public.yml, and repoint the upload dispatcher's threeaspnetcore_*_windowsbranches to it.aspnetcoretoolsNativeAOT tool cross-links native code foraarch64-linux-gnu, which needs an arm64 sysroot. The plain1es-ubuntu-2204image has no/crossrootfs/arm64, so it failed to link (ld.lld: cannot open crti.o, missing-ldl/-lc/-lm/-lgcc). Run only the arm64build.shstep in the dotnet cross prereq container (azurelinux-3.0-net11.0-cross-arm64, which bundles clang + the sysroot) via a steptarget, with-p:CrossBuild=trueandROOTFS_DIR=/crossrootfs/arm64. Pack/publish steps stay on the ubuntu host. Mirrors aspnetcoreci-public.yml's arm64 leg.Validation