-
Notifications
You must be signed in to change notification settings - Fork 298
Add ASP.NET Core perf-build pipeline #5243
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
LoopedBard3
wants to merge
12
commits into
dotnet:main
Choose a base branch
from
LoopedBard3:loopedbard3/aspnetcore-perf-build
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
898e7c0
Add aspnetcore perf-build pipeline (moved from dotnet/aspnetcore)
657cd3d
Tag perf-build with aspnetcore-sha for infra indexer correlation
ddfcf04
Drop aspnetcore-sha build tag (Option B: indexer reads repo-resource …
097ec3a
Address Copilot review: fix job variables syntax + doc nits
4f41751
Forward sha to all upload buildTypes (Copilot review #7)
2853c6c
Split Windows build into one self-sufficient job per arch
c43515f
Refresh stale sha-parameter comment in upload dispatcher
02530d9
Address Copilot re-review: gate Build stage + robust pack-script defa…
7b1ca1d
Rename pack-bcs-archives.ps1 -> pack-bcs-archives-aspnetcore.ps1
faa66ae
Fail loudly on duplicate runtime-pack nupkgs in pack-bcs-archives-asp…
c96b8cd
Rename $matches local to $nupkgMatches in pack-bcs-archives-aspnetcore
a867923
Stage aspnetcore BCS artifact as the raw runtime-pack nupkg
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,364 @@ | ||
| # aspnetcore-perf-build-jobs.yml | ||
| # | ||
| # Authored build jobs for the ASP.NET Core perf-build pipeline (consumed by | ||
| # eng/pipelines/aspnetcore-perf-build.yml). These jobs are written from scratch | ||
| # here in dotnet/performance instead of reusing dotnet/aspnetcore's | ||
| # `.azure/pipelines/jobs/default-build.yml`, because that template has hard | ||
| # `@self` references (e.g. /eng/common/templates-official/job/job.yml@self) and | ||
| # `@self` always resolves to the ROOT pipeline repo (performance), which does not | ||
| # carry aspnetcore's eng/common layout/contract. So we stand up the build | ||
| # ourselves: pick the dnceng internal pool, check out the aspnetcore mirror at the | ||
| # triggering commit alongside this repo (for the staging script), run aspnetcore's | ||
| # own eng/build with lean perf args (PUBLIC feeds only -- no internal runtime | ||
| # download), stage each per-RID runtime-pack nupkg verbatim as the BCS artifact via | ||
| # the moved eng/pipelines/tools/stage-bcs-nupkg-aspnetcore.ps1, and publish one | ||
| # pipeline artifact per config. | ||
| # | ||
| # Job names (Windows_x64_build / Windows_x86_build / Windows_arm64_build / | ||
| # Linux_x64_build / Linux_arm64_build) are load-bearing: | ||
| # they must match the `dependencyJobName` values in | ||
| # eng/pipelines/upload-build-artifacts-jobs.yml's aspnetcore_* branches. | ||
| # | ||
| # PUBLIC-FEED rationale: aspnetcore's own ci-public.yml builds every public PR with | ||
| # `_InternalRuntimeDownloadArgs` empty, proving public feeds suffice for a from- | ||
| # source pack build. We therefore drop enable-internal-runtimes / get-delegation-sas | ||
| # / the dotnetbuilds-internal-read connection entirely and pass no | ||
| # -RuntimeSourceFeed args. | ||
|
|
||
| parameters: | ||
| aspnetcoreRepoAlias: aspnetcore | ||
| performanceRepoAlias: self | ||
| # Per-config enablement booleans (forward-compat with the MissingBuildsTrigger | ||
| # PerConfiguration indexer). In v1's eager per-commit CI-trigger mode all five | ||
| # are true and all configs build; the booleans let a future Function queue a | ||
| # subset per config. | ||
| aspnetcore_x64_linux: true | ||
| aspnetcore_arm64_linux: true | ||
| aspnetcore_x64_windows: true | ||
| aspnetcore_arm64_windows: true | ||
| aspnetcore_x86_windows: true | ||
|
|
||
| jobs: | ||
|
|
||
| # =========================================================================== | ||
| # Windows build jobs (one self-sufficient job per arch, mirroring the Linux | ||
| # jobs below). Each job is independently gated by its config boolean, checks out | ||
| # the aspnetcore mirror + this repo, runs aspnetcore's eng/build.cmd standalone | ||
| # for its arch, packs the per-RID archive, and publishes one artifact. | ||
| # | ||
| # Unlike aspnetcore ci-public.yml -- which builds x64/x86/arm64 sequentially in | ||
| # ONE job so x86/arm64 reuse the x64 step's managed build and on-machine native | ||
| # toolchain -- these jobs run on separate agents, so each must be self-sufficient: | ||
| # * every arch carries -all (full managed build) and -nativeToolsOnMachine | ||
| # (set up the native toolchain the shared x64 step used to provide); | ||
| # * x86/arm64 keep -noBuildNative (faithful to ci-public's per-arch args; their | ||
| # native runtime bits restore from packages rather than cross-building on the | ||
| # x64 host). The first real queued run validates standalone native restore. | ||
| # | ||
| # Job names (Windows_x64_build / Windows_x86_build / Windows_arm64_build) are | ||
| # load-bearing: they must match the `dependencyJobName` values in | ||
| # eng/pipelines/upload-build-artifacts-jobs.yml's aspnetcore_*_windows branches. | ||
| # =========================================================================== | ||
| - ${{ if eq(parameters.aspnetcore_x64_windows, true) }}: | ||
| - job: Windows_x64_build | ||
| displayName: 'Build: Windows x64 (perf-build)' | ||
| timeoutInMinutes: 180 | ||
| pool: | ||
| name: $(DncEngInternalBuildPool) | ||
| demands: ImageOverride -equals windows.vs2026preview.scout.amd64 | ||
| variables: | ||
| _AspNetCoreRoot: $(Agent.BuildDirectory)\s\aspnetcore | ||
| _StageNupkgScript: $(Agent.BuildDirectory)\s\performance\eng\pipelines\tools\stage-bcs-nupkg-aspnetcore.ps1 | ||
| _ShippingDir: $(Agent.BuildDirectory)\s\aspnetcore\artifacts\packages\Release\Shipping | ||
| _StagingRoot: $(Build.ArtifactStagingDirectory)\bcs | ||
| MSBUILDUSESERVER: "1" | ||
| steps: | ||
| - checkout: ${{ parameters.aspnetcoreRepoAlias }} | ||
| path: s/aspnetcore | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
| - checkout: ${{ parameters.performanceRepoAlias }} | ||
| path: s/performance | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
|
|
||
| - script: >- | ||
| eng\build.cmd | ||
| -ci | ||
| -prepareMachine | ||
| -nativeToolsOnMachine | ||
| -Configuration Release | ||
| -arch x64 | ||
| -pack | ||
| -all | ||
| -noBuildJava | ||
| /p:OnlyPackPlatformSpecificPackages=true | ||
| $(_BuildArgs) | ||
| /bl:artifacts/log/Release/Build.x64.binlog | ||
| workingDirectory: $(_AspNetCoreRoot) | ||
| displayName: Build x64 | ||
| env: | ||
| MSBUILDUSESERVER: "1" | ||
|
|
||
| - pwsh: >- | ||
| & "$(_StageNupkgScript)" -Rids win-x64 -ShippingDir "$(_ShippingDir)" -StagingRoot "$(_StagingRoot)" | ||
| displayName: 'Stage BCS nupkg (win-x64)' | ||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish BuildArtifacts_windows_x64_Release_aspnetcore' | ||
| inputs: | ||
| targetPath: $(_StagingRoot)\BuildArtifacts_windows_x64_Release_aspnetcore | ||
| artifactName: BuildArtifacts_windows_x64_Release_aspnetcore | ||
|
|
||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish Windows x64 build logs' | ||
| condition: always() | ||
| continueOnError: true | ||
| inputs: | ||
| targetPath: $(_AspNetCoreRoot)\artifacts\log | ||
| artifactName: Windows_x64_perf_build_Logs_Attempt_$(System.JobAttempt) | ||
|
|
||
| # =========================================================================== | ||
| # Windows x86 build job | ||
| # =========================================================================== | ||
| - ${{ if eq(parameters.aspnetcore_x86_windows, true) }}: | ||
| - job: Windows_x86_build | ||
| displayName: 'Build: Windows x86 (perf-build)' | ||
| timeoutInMinutes: 180 | ||
| pool: | ||
| name: $(DncEngInternalBuildPool) | ||
| demands: ImageOverride -equals windows.vs2026preview.scout.amd64 | ||
| variables: | ||
| _AspNetCoreRoot: $(Agent.BuildDirectory)\s\aspnetcore | ||
| _StageNupkgScript: $(Agent.BuildDirectory)\s\performance\eng\pipelines\tools\stage-bcs-nupkg-aspnetcore.ps1 | ||
| _ShippingDir: $(Agent.BuildDirectory)\s\aspnetcore\artifacts\packages\Release\Shipping | ||
| _StagingRoot: $(Build.ArtifactStagingDirectory)\bcs | ||
| MSBUILDUSESERVER: "1" | ||
| steps: | ||
| - checkout: ${{ parameters.aspnetcoreRepoAlias }} | ||
| path: s/aspnetcore | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
| - checkout: ${{ parameters.performanceRepoAlias }} | ||
| path: s/performance | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
|
|
||
| - script: >- | ||
| eng\build.cmd | ||
| -ci | ||
| -prepareMachine | ||
| -nativeToolsOnMachine | ||
| -Configuration Release | ||
| -arch x86 | ||
| -pack | ||
| -all | ||
| -noBuildJava | ||
| -noBuildNative | ||
| /p:OnlyPackPlatformSpecificPackages=true | ||
| $(_BuildArgs) | ||
| /bl:artifacts/log/Release/Build.x86.binlog | ||
| workingDirectory: $(_AspNetCoreRoot) | ||
| displayName: Build x86 | ||
| env: | ||
| MSBUILDUSESERVER: "1" | ||
|
|
||
| - pwsh: >- | ||
| & "$(_StageNupkgScript)" -Rids win-x86 -ShippingDir "$(_ShippingDir)" -StagingRoot "$(_StagingRoot)" | ||
| displayName: 'Stage BCS nupkg (win-x86)' | ||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish BuildArtifacts_windows_x86_Release_aspnetcore' | ||
| inputs: | ||
| targetPath: $(_StagingRoot)\BuildArtifacts_windows_x86_Release_aspnetcore | ||
| artifactName: BuildArtifacts_windows_x86_Release_aspnetcore | ||
|
|
||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish Windows x86 build logs' | ||
| condition: always() | ||
| continueOnError: true | ||
| inputs: | ||
| targetPath: $(_AspNetCoreRoot)\artifacts\log | ||
| artifactName: Windows_x86_perf_build_Logs_Attempt_$(System.JobAttempt) | ||
|
|
||
| # =========================================================================== | ||
| # Windows arm64 build job | ||
| # =========================================================================== | ||
| - ${{ if eq(parameters.aspnetcore_arm64_windows, true) }}: | ||
| - job: Windows_arm64_build | ||
| displayName: 'Build: Windows ARM64 (perf-build)' | ||
| timeoutInMinutes: 180 | ||
| pool: | ||
| name: $(DncEngInternalBuildPool) | ||
| demands: ImageOverride -equals windows.vs2026preview.scout.amd64 | ||
| variables: | ||
| _AspNetCoreRoot: $(Agent.BuildDirectory)\s\aspnetcore | ||
| _StageNupkgScript: $(Agent.BuildDirectory)\s\performance\eng\pipelines\tools\stage-bcs-nupkg-aspnetcore.ps1 | ||
| _ShippingDir: $(Agent.BuildDirectory)\s\aspnetcore\artifacts\packages\Release\Shipping | ||
| _StagingRoot: $(Build.ArtifactStagingDirectory)\bcs | ||
| MSBUILDUSESERVER: "1" | ||
| steps: | ||
| - checkout: ${{ parameters.aspnetcoreRepoAlias }} | ||
| path: s/aspnetcore | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
| - checkout: ${{ parameters.performanceRepoAlias }} | ||
| path: s/performance | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
|
|
||
| - script: >- | ||
| eng\build.cmd | ||
| -ci | ||
| -prepareMachine | ||
| -nativeToolsOnMachine | ||
| -Configuration Release | ||
| -arch arm64 | ||
| -pack | ||
| -all | ||
| -noBuildJava | ||
| -noBuildNative | ||
| /p:OnlyPackPlatformSpecificPackages=true | ||
| $(_BuildArgs) | ||
| /bl:artifacts/log/Release/Build.arm64.binlog | ||
| workingDirectory: $(_AspNetCoreRoot) | ||
| displayName: Build ARM64 | ||
| env: | ||
| MSBUILDUSESERVER: "1" | ||
|
|
||
| - pwsh: >- | ||
| & "$(_StageNupkgScript)" -Rids win-arm64 -ShippingDir "$(_ShippingDir)" -StagingRoot "$(_StagingRoot)" | ||
| displayName: 'Stage BCS nupkg (win-arm64)' | ||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish BuildArtifacts_windows_arm64_Release_aspnetcore' | ||
| inputs: | ||
| targetPath: $(_StagingRoot)\BuildArtifacts_windows_arm64_Release_aspnetcore | ||
| artifactName: BuildArtifacts_windows_arm64_Release_aspnetcore | ||
|
|
||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish Windows arm64 build logs' | ||
| condition: always() | ||
| continueOnError: true | ||
| inputs: | ||
| targetPath: $(_AspNetCoreRoot)\artifacts\log | ||
| artifactName: Windows_arm64_perf_build_Logs_Attempt_$(System.JobAttempt) | ||
|
|
||
| # =========================================================================== | ||
| # Linux x64 build job | ||
| # =========================================================================== | ||
| - ${{ if eq(parameters.aspnetcore_x64_linux, true) }}: | ||
| - job: Linux_x64_build | ||
| displayName: 'Build: Linux x64 (perf-build)' | ||
| timeoutInMinutes: 180 | ||
| pool: | ||
| name: $(DncEngInternalBuildPool) | ||
| demands: ImageOverride -equals 1es-ubuntu-2204 | ||
| variables: | ||
| _AspNetCoreRoot: $(Agent.BuildDirectory)/s/aspnetcore | ||
| _StageNupkgScript: $(Agent.BuildDirectory)/s/performance/eng/pipelines/tools/stage-bcs-nupkg-aspnetcore.ps1 | ||
| _ShippingDir: $(Agent.BuildDirectory)/s/aspnetcore/artifacts/packages/Release/Shipping | ||
| _StagingRoot: $(Build.ArtifactStagingDirectory)/bcs | ||
| steps: | ||
| - checkout: ${{ parameters.aspnetcoreRepoAlias }} | ||
| path: s/aspnetcore | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
| - checkout: ${{ parameters.performanceRepoAlias }} | ||
| path: s/performance | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
|
|
||
| - script: >- | ||
| eng/build.sh | ||
| --ci | ||
| --configuration Release | ||
| --arch x64 | ||
| --pack | ||
| --all | ||
| --no-build-java | ||
| -p:OnlyPackPlatformSpecificPackages=true | ||
| $(_BuildArgs) | ||
| /bl:artifacts/log/Release/Build.linux-x64.binlog | ||
| workingDirectory: $(_AspNetCoreRoot) | ||
| displayName: Build linux-x64 | ||
|
|
||
| - pwsh: >- | ||
| & "$(_StageNupkgScript)" -Rids linux-x64 -ShippingDir "$(_ShippingDir)" -StagingRoot "$(_StagingRoot)" | ||
| displayName: 'Stage BCS nupkg (linux-x64)' | ||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish BuildArtifacts_linux_x64_Release_aspnetcore' | ||
| inputs: | ||
| targetPath: $(_StagingRoot)/BuildArtifacts_linux_x64_Release_aspnetcore | ||
| artifactName: BuildArtifacts_linux_x64_Release_aspnetcore | ||
|
|
||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish Linux x64 build logs' | ||
| condition: always() | ||
| continueOnError: true | ||
| inputs: | ||
| targetPath: $(_AspNetCoreRoot)/artifacts/log | ||
| artifactName: Linux_x64_perf_build_Logs_Attempt_$(System.JobAttempt) | ||
|
|
||
| # =========================================================================== | ||
| # Linux arm64 build job (cross-build from the x64 host) | ||
| # =========================================================================== | ||
| - ${{ if eq(parameters.aspnetcore_arm64_linux, true) }}: | ||
| - job: Linux_arm64_build | ||
| displayName: 'Build: Linux ARM64 (perf-build)' | ||
| timeoutInMinutes: 180 | ||
| pool: | ||
| name: $(DncEngInternalBuildPool) | ||
| demands: ImageOverride -equals 1es-ubuntu-2204 | ||
| variables: | ||
| _AspNetCoreRoot: $(Agent.BuildDirectory)/s/aspnetcore | ||
| _StageNupkgScript: $(Agent.BuildDirectory)/s/performance/eng/pipelines/tools/stage-bcs-nupkg-aspnetcore.ps1 | ||
| _ShippingDir: $(Agent.BuildDirectory)/s/aspnetcore/artifacts/packages/Release/Shipping | ||
| _StagingRoot: $(Build.ArtifactStagingDirectory)/bcs | ||
| steps: | ||
| - checkout: ${{ parameters.aspnetcoreRepoAlias }} | ||
| path: s/aspnetcore | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
| - checkout: ${{ parameters.performanceRepoAlias }} | ||
| path: s/performance | ||
| fetchDepth: 1 | ||
| fetchTags: false | ||
| clean: true | ||
|
|
||
| - script: >- | ||
| eng/build.sh | ||
| --ci | ||
| --configuration Release | ||
| --arch arm64 | ||
| --pack | ||
| --all | ||
| --no-build-java | ||
| -p:OnlyPackPlatformSpecificPackages=true | ||
| $(_BuildArgs) | ||
| /bl:artifacts/log/Release/Build.linux-arm64.binlog | ||
| workingDirectory: $(_AspNetCoreRoot) | ||
| displayName: Build linux-arm64 | ||
|
|
||
| - pwsh: >- | ||
| & "$(_StageNupkgScript)" -Rids linux-arm64 -ShippingDir "$(_ShippingDir)" -StagingRoot "$(_StagingRoot)" | ||
| displayName: 'Stage BCS nupkg (linux-arm64)' | ||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish BuildArtifacts_linux_arm64_Release_aspnetcore' | ||
| inputs: | ||
| targetPath: $(_StagingRoot)/BuildArtifacts_linux_arm64_Release_aspnetcore | ||
| artifactName: BuildArtifacts_linux_arm64_Release_aspnetcore | ||
|
|
||
| - task: PublishPipelineArtifact@1 | ||
| displayName: 'Publish Linux arm64 build logs' | ||
| condition: always() | ||
| continueOnError: true | ||
| inputs: | ||
| targetPath: $(_AspNetCoreRoot)/artifacts/log | ||
| artifactName: Linux_arm64_perf_build_Logs_Attempt_$(System.JobAttempt) | ||
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.