From 513e76a66bc3aff53e1ef13f545ba9d8247913e5 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Fri, 22 May 2026 09:23:30 -0700 Subject: [PATCH 1/9] Migrate eng pipelines to pipeline artifacts Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../common/download-artifact-step.yml | 6 +- .../download-specific-artifact-step.yml | 10 ++-- .../templates/browser-wasm-build-tests.yml | 15 ++--- .../browser-wasm-coreclr-build-tests.yml | 12 ++-- .../templates/publish-build-artifacts.yml | 4 +- eng/pipelines/common/upload-artifact-step.yml | 4 +- .../upload-intermediate-artifacts-step.yml | 5 +- .../common/wasm-post-build-steps.yml | 10 ++-- .../templates/build-perf-bdn-app.yml | 6 +- .../templates/build-perf-maui-apps-net6.yml | 36 +++++------ .../templates/build-perf-maui-apps-net7.yml | 36 +++++------ .../templates/build-perf-sample-apps.yml | 60 +++++++++---------- 12 files changed, 96 insertions(+), 108 deletions(-) diff --git a/eng/pipelines/common/download-artifact-step.yml b/eng/pipelines/common/download-artifact-step.yml index 8300433241b447..360adca7503917 100644 --- a/eng/pipelines/common/download-artifact-step.yml +++ b/eng/pipelines/common/download-artifact-step.yml @@ -8,14 +8,12 @@ parameters: steps: # Download artifact - - task: DownloadBuildArtifacts@0 + - task: DownloadPipelineArtifact@2 displayName: 'Download ${{ parameters.displayName }}' inputs: buildType: current - downloadType: single - downloadPath: '$(Build.SourcesDirectory)/__download__' artifactName: '${{ parameters.artifactName }}' - checkDownloadedFiles: true + targetPath: '$(Build.SourcesDirectory)/__download__/${{ parameters.artifactName }}' # Unzip artifact - task: ExtractFiles@1 diff --git a/eng/pipelines/common/download-specific-artifact-step.yml b/eng/pipelines/common/download-specific-artifact-step.yml index 9ccf241404a671..1ee1161d28f43b 100644 --- a/eng/pipelines/common/download-specific-artifact-step.yml +++ b/eng/pipelines/common/download-specific-artifact-step.yml @@ -11,18 +11,16 @@ parameters: steps: # Download artifact - - task: DownloadBuildArtifacts@0 + - task: DownloadPipelineArtifact@2 displayName: 'Download specific ${{ parameters.displayName }}' inputs: buildType: specific project: ${{ parameters.project }} - pipeline: ${{ parameters.pipeline }} + definition: ${{ parameters.pipeline }} buildVersionToDownload: specific - branchName: ${{ parameters.branchName }} - buildId: ${{ parameters.buildId }} - downloadType: single - downloadPath: '$(Build.SourcesDirectory)/__download__' + pipelineId: ${{ parameters.buildId }} artifactName: '${{ parameters.artifactName }}' + targetPath: '$(Build.SourcesDirectory)/__download__/${{ parameters.artifactName }}' # Unzip artifact - task: ExtractFiles@1 diff --git a/eng/pipelines/common/templates/browser-wasm-build-tests.yml b/eng/pipelines/common/templates/browser-wasm-build-tests.yml index 39fca50137411f..4eb3821ea22a14 100644 --- a/eng/pipelines/common/templates/browser-wasm-build-tests.yml +++ b/eng/pipelines/common/templates/browser-wasm-build-tests.yml @@ -53,13 +53,12 @@ jobs: preBuildSteps: # Download single threaded runtime packs, and tasks needed to build WBT - - task: DownloadBuildArtifacts@0 + - task: DownloadPipelineArtifact@2 displayName: Download built nugets for singlethreaded runtime inputs: buildType: current artifactName: 'BuildArtifacts_browser_wasm_$(_hostedOs)_Release_SingleThreaded_BuildOnly' - downloadType: single - downloadPath: '$(Build.SourcesDirectory)/artifacts' + targetPath: '$(Build.SourcesDirectory)/artifacts/BuildArtifacts_browser_wasm_$(_hostedOs)_Release_SingleThreaded_BuildOnly' - task: CopyFiles@2 displayName: Copy single threaded assets @@ -69,13 +68,12 @@ jobs: CleanTargetFolder: false # Download for multi-threaded - - task: DownloadBuildArtifacts@0 + - task: DownloadPipelineArtifact@2 displayName: Download built nugets for multi-threaded runtime inputs: buildType: current artifactName: BuildArtifacts_browser_wasm_$(_hostedOs)_Release_MultiThreaded_BuildOnly - downloadType: single - downloadPath: '$(Build.SourcesDirectory)/artifacts' + targetPath: '$(Build.SourcesDirectory)/artifacts/BuildArtifacts_browser_wasm_$(_hostedOs)_Release_MultiThreaded_BuildOnly' - task: CopyFiles@2 displayName: Copy multithreading runtime pack @@ -86,13 +84,12 @@ jobs: CleanTargetFolder: false # Download WBT - - task: DownloadBuildArtifacts@0 + - task: DownloadPipelineArtifact@2 displayName: Download Wasm.Build.Tests inputs: buildType: current artifactName: WasmBuildTests_$(_hostedOs)_SingleThreaded_BuildOnly - downloadType: single - downloadPath: '$(Build.SourcesDirectory)/artifacts' + targetPath: '$(Build.SourcesDirectory)/artifacts/WasmBuildTests_$(_hostedOs)_SingleThreaded_BuildOnly' - task: CopyFiles@2 displayName: Copy Wasm.Build.Tests archive diff --git a/eng/pipelines/common/templates/browser-wasm-coreclr-build-tests.yml b/eng/pipelines/common/templates/browser-wasm-coreclr-build-tests.yml index ac76b6332c3801..79760058166b34 100644 --- a/eng/pipelines/common/templates/browser-wasm-coreclr-build-tests.yml +++ b/eng/pipelines/common/templates/browser-wasm-coreclr-build-tests.yml @@ -51,13 +51,12 @@ jobs: preBuildSteps: # Download single threaded runtime packs, and tasks needed to build WBT - - task: DownloadBuildArtifacts@0 + - task: DownloadPipelineArtifact@2 displayName: Download built nugets for singlethreaded runtime inputs: buildType: current artifactName: 'BuildArtifacts_browser_wasm_$(_hostedOs)_Release_CoreCLR' - downloadType: single - downloadPath: '$(Build.SourcesDirectory)/artifacts' + targetPath: '$(Build.SourcesDirectory)/artifacts/BuildArtifacts_browser_wasm_$(_hostedOs)_Release_CoreCLR' - task: CopyFiles@2 displayName: Copy single threaded assets @@ -67,7 +66,7 @@ jobs: CleanTargetFolder: false # Download for multi-threaded - # - task: DownloadBuildArtifacts@0 + # - task: DownloadPipelineArtifact@2 # displayName: Download built nugets for multi-threaded runtime # inputs: # buildType: current @@ -84,13 +83,12 @@ jobs: # CleanTargetFolder: false # Download WBT - TODO-WASM: This points to "mono" build, altough - - task: DownloadBuildArtifacts@0 + - task: DownloadPipelineArtifact@2 displayName: Download Wasm.Build.Tests inputs: buildType: current artifactName: WasmBuildTests_$(_hostedOs)_CoreCLR - downloadType: single - downloadPath: '$(Build.SourcesDirectory)/artifacts' + targetPath: '$(Build.SourcesDirectory)/artifacts/WasmBuildTests_$(_hostedOs)_CoreCLR' - task: CopyFiles@2 displayName: Copy Wasm.Build.Tests archive diff --git a/eng/pipelines/common/templates/publish-build-artifacts.yml b/eng/pipelines/common/templates/publish-build-artifacts.yml index b9b263c361f890..7b5c875f8aebcb 100644 --- a/eng/pipelines/common/templates/publish-build-artifacts.yml +++ b/eng/pipelines/common/templates/publish-build-artifacts.yml @@ -11,12 +11,12 @@ parameters: steps: - ${{ if parameters.isOfficialBuild }}: - - task: 1ES.PublishBuildArtifacts@1 + - task: 1ES.PublishPipelineArtifact@1 displayName: ${{ parameters.displayName }} inputs: ${{ parameters.inputs }} condition: ${{ parameters.condition }} - ${{ else }}: - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: ${{ parameters.displayName }} inputs: ${{ parameters.inputs }} condition: ${{ parameters.condition }} \ No newline at end of file diff --git a/eng/pipelines/common/upload-artifact-step.yml b/eng/pipelines/common/upload-artifact-step.yml index d4091a7cc192f5..f916bb9db30432 100644 --- a/eng/pipelines/common/upload-artifact-step.yml +++ b/eng/pipelines/common/upload-artifact-step.yml @@ -26,6 +26,6 @@ steps: isOfficialBuild: ${{ parameters.isOfficialBuild }} displayName: 'Publish ${{ parameters.displayName }}' inputs: - PathtoPublish: $(Build.StagingDirectory)/${{ parameters.artifactName }}${{ parameters.archiveExtension }} - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.StagingDirectory)/${{ parameters.artifactName }}${{ parameters.archiveExtension }} + artifactName: ${{ parameters.artifactName }} condition: ${{ parameters.condition }} \ No newline at end of file diff --git a/eng/pipelines/common/upload-intermediate-artifacts-step.yml b/eng/pipelines/common/upload-intermediate-artifacts-step.yml index caa8fb33d57fce..64c17d095c0665 100644 --- a/eng/pipelines/common/upload-intermediate-artifacts-step.yml +++ b/eng/pipelines/common/upload-intermediate-artifacts-step.yml @@ -18,6 +18,5 @@ steps: isOfficialBuild: ${{ parameters.isOfficialBuild }} displayName: Publish intermediate artifacts inputs: - PathtoPublish: '$(Build.StagingDirectory)/IntermediateArtifacts' - ArtifactName: IntermediateArtifacts - ArtifactType: container + targetPath: '$(Build.StagingDirectory)/IntermediateArtifacts' + artifactName: IntermediateArtifacts diff --git a/eng/pipelines/common/wasm-post-build-steps.yml b/eng/pipelines/common/wasm-post-build-steps.yml index 2c7979ae25308d..8637dd280c6c08 100644 --- a/eng/pipelines/common/wasm-post-build-steps.yml +++ b/eng/pipelines/common/wasm-post-build-steps.yml @@ -24,13 +24,12 @@ steps: TargetFolder: '$(Build.StagingDirectory)/IntermediateArtifacts' CleanTargetFolder: true - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: Publish intermediate artifacts condition: and(succeeded(), ${{ parameters.publishArtifactsForWorkload }}) inputs: - pathToPublish: '$(Build.StagingDirectory)/IntermediateArtifacts' + targetPath: '$(Build.StagingDirectory)/IntermediateArtifacts' artifactName: BuildArtifacts_${{ parameters.osGroup }}_wasm_$(_hostedOs)_${{ parameters.buildConfig }}_${{ parameters.nameSuffix }} - artifactType: container - task: CopyFiles@2 displayName: Copy WBT @@ -41,10 +40,9 @@ steps: TargetFolder: '$(Build.StagingDirectory)/IntermediateArtifacts' CleanTargetFolder: true - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: Publish Wasm.Build.Tests archive condition: and(succeeded(), ${{ parameters.publishWBT }}) inputs: - pathToPublish: '$(Build.StagingDirectory)/IntermediateArtifacts' + targetPath: '$(Build.StagingDirectory)/IntermediateArtifacts' artifactName: WasmBuildTests_$(_hostedOs)_${{ parameters.nameSuffix }} - artifactType: container diff --git a/eng/pipelines/performance/templates/build-perf-bdn-app.yml b/eng/pipelines/performance/templates/build-perf-bdn-app.yml index 65f80896066ec0..6facb71203e5f8 100644 --- a/eng/pipelines/performance/templates/build-perf-bdn-app.yml +++ b/eng/pipelines/performance/templates/build-perf-bdn-app.yml @@ -160,12 +160,12 @@ steps: displayName: Build BDN Android App workingDirectory: $(Build.SourcesDirectory)/maui - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish Benchmarks.Droid binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/maui/BenchmarksDroid.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/maui/BenchmarksDroid.binlog + artifactName: ${{ parameters.artifactName }}_BenchmarksDroidBinlog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: diff --git a/eng/pipelines/performance/templates/build-perf-maui-apps-net6.yml b/eng/pipelines/performance/templates/build-perf-maui-apps-net6.yml index 6f1cf1a49bc345..ad854746ed31af 100644 --- a/eng/pipelines/performance/templates/build-perf-maui-apps-net6.yml +++ b/eng/pipelines/performance/templates/build-perf-maui-apps-net6.yml @@ -180,47 +180,47 @@ steps: displayName: Build MAUI Blazor MacCatalyst workingDirectory: $(Build.SourcesDirectory)/MauiBlazorTesting - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiAndroid binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiAndroid.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiTesting/MauiAndroid.binlog + artifactName: ${{ parameters.artifactName }}_MauiAndroidBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiiOS binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiiOS.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiTesting/MauiiOS.binlog + artifactName: ${{ parameters.artifactName }}_MauiiOSBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiMacCatalyst binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiMacCatalyst.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiTesting/MauiMacCatalyst.binlog + artifactName: ${{ parameters.artifactName }}_MauiMacCatalystBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiBlazoriOS binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiBlazorTesting/MauiBlazoriOS.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiBlazorTesting/MauiBlazoriOS.binlog + artifactName: ${{ parameters.artifactName }}_MauiBlazoriOSBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiBlazorMacCatalyst binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiBlazorTesting/MauiBlazorMacCatalyst.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiBlazorTesting/MauiBlazorMacCatalyst.binlog + artifactName: ${{ parameters.artifactName }}_MauiBlazorMacCatalystBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiiOSPodcast binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/dotnet-podcasts/src/Mobile/MauiiOSPodcast.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/dotnet-podcasts/src/Mobile/MauiiOSPodcast.binlog + artifactName: ${{ parameters.artifactName }}_MauiiOSPodcastBinlog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: diff --git a/eng/pipelines/performance/templates/build-perf-maui-apps-net7.yml b/eng/pipelines/performance/templates/build-perf-maui-apps-net7.yml index 4f593b18ea8d9b..6c3ed7828b2414 100644 --- a/eng/pipelines/performance/templates/build-perf-maui-apps-net7.yml +++ b/eng/pipelines/performance/templates/build-perf-maui-apps-net7.yml @@ -265,47 +265,47 @@ steps: displayName: Build MAUI Blazor MacCatalyst workingDirectory: $(Build.SourcesDirectory)/MauiBlazorTesting - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiAndroid binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiAndroid.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiTesting/MauiAndroid.binlog + artifactName: ${{ parameters.artifactName }}_MauiAndroidBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiiOS binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiiOS.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiTesting/MauiiOS.binlog + artifactName: ${{ parameters.artifactName }}_MauiiOSBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiMacCatalyst binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiMacCatalyst.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiTesting/MauiMacCatalyst.binlog + artifactName: ${{ parameters.artifactName }}_MauiMacCatalystBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiBlazoriOS binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiBlazorTesting/MauiBlazoriOS.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiBlazorTesting/MauiBlazoriOS.binlog + artifactName: ${{ parameters.artifactName }}_MauiBlazoriOSBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiBlazorMacCatalyst binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/MauiBlazorTesting/MauiBlazorMacCatalyst.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/MauiBlazorTesting/MauiBlazorMacCatalyst.binlog + artifactName: ${{ parameters.artifactName }}_MauiBlazorMacCatalystBinlog_Attempt$(System.JobAttempt) - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 displayName: 'Publish MauiiOSPodcast binlog' condition: always() inputs: - pathtoPublish: $(Build.SourcesDirectory)/dotnet-podcasts/src/Mobile/MauiiOSPodcast.binlog - artifactName: ${{ parameters.artifactName }} + targetPath: $(Build.SourcesDirectory)/dotnet-podcasts/src/Mobile/MauiiOSPodcast.binlog + artifactName: ${{ parameters.artifactName }}_MauiiOSPodcastBinlog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: diff --git a/eng/pipelines/performance/templates/build-perf-sample-apps.yml b/eng/pipelines/performance/templates/build-perf-sample-apps.yml index bf2beaf8ebb8f9..a317db4a859407 100644 --- a/eng/pipelines/performance/templates/build-perf-sample-apps.yml +++ b/eng/pipelines/performance/templates/build-perf-sample-apps.yml @@ -11,12 +11,12 @@ steps: - script: make run TARGET_ARCH=arm64 DEPLOY_AND_RUN=false RUNTIME_FLAVOR=Mono workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/Android displayName: Build HelloAndroid sample app RUNTIME_FLAVOR=Mono - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog - artifactName: AndroidMonoArm64BuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog + artifactName: AndroidMonoArm64BuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/artifacts/bin/AndroidSampleApp/arm64/Release/android-arm64/AppBundle/bin/HelloAndroid.apk @@ -34,12 +34,12 @@ steps: - script: make run TARGET_ARCH=arm64 DEPLOY_AND_RUN=false RUNTIME_FLAVOR=Mono AOT=true workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/Android displayName: Build HelloAndroid sample app RUNTIME_FLAVOR=Mono AOT=true - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog - artifactName: AndroidMonoAOTArm64BuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog + artifactName: AndroidMonoAOTArm64BuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/artifacts/bin/AndroidSampleApp/arm64/Release/android-arm64/AppBundle/bin/HelloAndroid.apk @@ -58,12 +58,12 @@ steps: - script: make run TARGET_ARCH=arm64 DEPLOY_AND_RUN=false RUNTIME_FLAVOR=CoreCLR workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/Android displayName: Build HelloAndroid sample app RUNTIME_FLAVOR=CoreCLR - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog - artifactName: AndroidCoreCLRArm64BuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog + artifactName: AndroidCoreCLRArm64BuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/artifacts/bin/AndroidSampleApp/arm64/Release/android-arm64/AppBundle/bin/HelloAndroid.apk @@ -81,12 +81,12 @@ steps: - script: make run TARGET_ARCH=arm64 DEPLOY_AND_RUN=false RUNTIME_FLAVOR=CoreCLR STATIC_LINKING=true workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/Android displayName: Build HelloAndroid sample app RUNTIME_FLAVOR=CoreCLR STATIC_LINKING=true - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog - artifactName: AndroidCoreCLRArm64StaticLinkingBuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog + artifactName: AndroidCoreCLRArm64StaticLinkingBuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/artifacts/bin/AndroidSampleApp/arm64/Release/android-arm64/AppBundle/bin/HelloAndroid.apk @@ -104,12 +104,12 @@ steps: - script: make run TARGET_ARCH=arm64 DEPLOY_AND_RUN=false RUNTIME_FLAVOR=CoreCLR R2R=true workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/Android displayName: Build HelloAndroid sample app RUNTIME_FLAVOR=CoreCLR R2R=true - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog - artifactName: AndroidCoreCLRR2RArm64BuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/Android/msbuild.binlog + artifactName: AndroidCoreCLRR2RArm64BuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/artifacts/bin/AndroidSampleApp/arm64/Release/android-arm64/AppBundle/bin/HelloAndroid.apk @@ -132,12 +132,12 @@ steps: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS displayName: Build HelloiOS Mono FullAOT sample app LLVM=False STRIP_SYMBOLS=True - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog - artifactName: iOSMonoFullAOTArm64NoLLVMStripSymbolsBuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog + artifactName: iOSMonoFullAOTArm64NoLLVMStripSymbolsBuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app @@ -156,12 +156,12 @@ steps: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS displayName: Build HelloiOS Mono FullAOT sample app LLVM=True STRIP_SYMBOLS=True - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog - artifactName: iOSMonoFullAOTArm64LLVMStripSymbolsBuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog + artifactName: iOSMonoFullAOTArm64LLVMStripSymbolsBuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app @@ -181,12 +181,12 @@ steps: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS displayName: Build HelloiOS CoreCLR Interpreter sample app STRIP_SYMBOLS=True - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog - artifactName: iOSCoreCLRInterpreterArm64StripSymbolsBuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog + artifactName: iOSCoreCLRInterpreterArm64StripSymbolsBuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app @@ -205,12 +205,12 @@ steps: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS displayName: Build HelloiOS CoreCLR R2R sample app STRIP_SYMBOLS=True - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog - artifactName: iOSCoreCLRR2RArm64StripSymbolsBuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/iOS/msbuild.binlog + artifactName: iOSCoreCLRR2RArm64StripSymbolsBuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app @@ -230,12 +230,12 @@ steps: DevTeamProvisioning: '-' workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT displayName: Build HelloiOS NativeAOT sample app STRIP_SYMBOLS=True - - task: PublishBuildArtifacts@1 + - task: PublishPipelineArtifact@1 condition: succeededOrFailed() displayName: 'Publish binlog' inputs: - pathtoPublish: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/msbuild.binlog - artifactName: iOSNativeAOTArm64StripSymbolsBuildLog + targetPath: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/msbuild.binlog + artifactName: iOSNativeAOTArm64StripSymbolsBuildLog_Attempt$(System.JobAttempt) - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(Build.SourcesDirectory)/src/mono/sample/iOS-NativeAOT/bin/ios-arm64/Bundle/HelloiOS/Release-iphoneos/HelloiOS.app From d69117e74e64c6296acd1e85c38140c36d50d92f Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Tue, 14 Jul 2026 09:14:24 -0700 Subject: [PATCH 2/9] Respond to PR feedback - Rename publish-build-artifacts.yml -> publish-pipeline-artifacts.yml and update references - Update commented-out multi-threaded download block to DownloadPipelineArtifact@2 (targetPath) - Append _Attempt$(System.JobAttempt) to always()-published SuperPMI_Collection/SuperPMI_Logs diagnostic artifacts to avoid retry collisions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2fd207c2-4d82-4608-aae9-e2fc3ea7bd2b --- .../common/templates/browser-wasm-coreclr-build-tests.yml | 3 +-- ...ish-build-artifacts.yml => publish-pipeline-artifacts.yml} | 0 eng/pipelines/common/templates/runtimes/run-test-job.yml | 4 ++-- eng/pipelines/common/upload-artifact-step.yml | 2 +- eng/pipelines/common/upload-intermediate-artifacts-step.yml | 2 +- eng/pipelines/libraries/superpmi-postprocess-step.yml | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) rename eng/pipelines/common/templates/{publish-build-artifacts.yml => publish-pipeline-artifacts.yml} (100%) diff --git a/eng/pipelines/common/templates/browser-wasm-coreclr-build-tests.yml b/eng/pipelines/common/templates/browser-wasm-coreclr-build-tests.yml index 79760058166b34..f0bb7949843533 100644 --- a/eng/pipelines/common/templates/browser-wasm-coreclr-build-tests.yml +++ b/eng/pipelines/common/templates/browser-wasm-coreclr-build-tests.yml @@ -71,8 +71,7 @@ jobs: # inputs: # buildType: current # artifactName: BuildArtifacts_browser_wasm_$(_hostedOs)_Release_MultiThreaded_BuildOnly - # downloadType: single - # downloadPath: '$(Build.SourcesDirectory)/artifacts' + # targetPath: '$(Build.SourcesDirectory)/artifacts/BuildArtifacts_browser_wasm_$(_hostedOs)_Release_MultiThreaded_BuildOnly' # - task: CopyFiles@2 # displayName: Copy multithreading runtime pack diff --git a/eng/pipelines/common/templates/publish-build-artifacts.yml b/eng/pipelines/common/templates/publish-pipeline-artifacts.yml similarity index 100% rename from eng/pipelines/common/templates/publish-build-artifacts.yml rename to eng/pipelines/common/templates/publish-pipeline-artifacts.yml diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml index 7068107295653e..132c9416d3372d 100644 --- a/eng/pipelines/common/templates/runtimes/run-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml @@ -587,7 +587,7 @@ jobs: archiveType: $(archiveType) tarCompression: $(tarCompression) archiveExtension: $(archiveExtension) - artifactName: 'SuperPMI_Collection_$(CollectionName)_$(CollectionType)_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)' + artifactName: 'SuperPMI_Collection_$(CollectionName)_$(CollectionType)_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_Attempt$(System.JobAttempt)' displayName: 'Upload artifacts SuperPMI $(CollectionName)-$(CollectionType) collection' condition: always() @@ -627,7 +627,7 @@ jobs: displayName: Publish SuperPMI logs inputs: targetPath: $(SpmiLogsLocation) - artifactName: 'SuperPMI_Logs_$(CollectionName)_$(CollectionType)_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)' + artifactName: 'SuperPMI_Logs_$(CollectionName)_$(CollectionType)_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_Attempt$(System.JobAttempt)' condition: always() ######################################################################################################## diff --git a/eng/pipelines/common/upload-artifact-step.yml b/eng/pipelines/common/upload-artifact-step.yml index f916bb9db30432..1fa35c7e72d2b5 100644 --- a/eng/pipelines/common/upload-artifact-step.yml +++ b/eng/pipelines/common/upload-artifact-step.yml @@ -21,7 +21,7 @@ steps: includeRootFolder: ${{ parameters.includeRootFolder }} condition: ${{ parameters.condition }} - - template: /eng/pipelines/common/templates/publish-build-artifacts.yml + - template: /eng/pipelines/common/templates/publish-pipeline-artifacts.yml parameters: isOfficialBuild: ${{ parameters.isOfficialBuild }} displayName: 'Publish ${{ parameters.displayName }}' diff --git a/eng/pipelines/common/upload-intermediate-artifacts-step.yml b/eng/pipelines/common/upload-intermediate-artifacts-step.yml index 64c17d095c0665..91744094379e6d 100644 --- a/eng/pipelines/common/upload-intermediate-artifacts-step.yml +++ b/eng/pipelines/common/upload-intermediate-artifacts-step.yml @@ -13,7 +13,7 @@ steps: TargetFolder: '$(Build.StagingDirectory)/IntermediateArtifacts/${{ parameters.name }}' CleanTargetFolder: true -- template: /eng/pipelines/common/templates/publish-build-artifacts.yml +- template: /eng/pipelines/common/templates/publish-pipeline-artifacts.yml parameters: isOfficialBuild: ${{ parameters.isOfficialBuild }} displayName: Publish intermediate artifacts diff --git a/eng/pipelines/libraries/superpmi-postprocess-step.yml b/eng/pipelines/libraries/superpmi-postprocess-step.yml index 09f6c36760a20d..fae59dfffcb255 100644 --- a/eng/pipelines/libraries/superpmi-postprocess-step.yml +++ b/eng/pipelines/libraries/superpmi-postprocess-step.yml @@ -53,7 +53,7 @@ steps: archiveType: $(archiveType) tarCompression: $(tarCompression) archiveExtension: $(archiveExtension) - artifactName: 'SuperPMI_Collection_${{ parameters.SuperPmiCollectionName }}_${{ parameters.SuperPmiCollectionType }}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}' + artifactName: 'SuperPMI_Collection_${{ parameters.SuperPmiCollectionName }}_${{ parameters.SuperPmiCollectionType }}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}_Attempt$(System.JobAttempt)' displayName: 'Upload artifacts SuperPMI ${{ parameters.SuperPmiCollectionName }}-${{ parameters.SuperPmiCollectionType }} collection' condition: always() From fa636516b24bc57d5e85d5b9ee77e740e00a6d65 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Tue, 14 Jul 2026 09:29:40 -0700 Subject: [PATCH 3/9] Suffix SuperPMI collect-pipeline artifact for retry-safety run-superpmi-collect-job.yml publishes SuperPMI_Collection_* with the default succeeded() condition but has fallible Azure-upload steps after the publish, and the artifact is not consumed downstream by name. Append _Attempt$(System.JobAttempt) so a job retry after a post-publish failure does not collide with the pipeline artifact from attempt 1. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2fd207c2-4d82-4608-aae9-e2fc3ea7bd2b --- eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml b/eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml index 8b4d33b027453a..4309c83190c6fb 100644 --- a/eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml +++ b/eng/pipelines/coreclr/templates/run-superpmi-collect-job.yml @@ -220,7 +220,7 @@ jobs: archiveType: $(archiveType) tarCompression: $(tarCompression) archiveExtension: $(archiveExtension) - artifactName: 'SuperPMI_Collection_$(CollectionName)_$(CollectionType)_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)' + artifactName: 'SuperPMI_Collection_$(CollectionName)_$(CollectionType)_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)_Attempt$(System.JobAttempt)' displayName: ${{ format('Upload artifacts SuperPMI {0}-{1} collection', parameters.collectionName, parameters.collectionType) }} - ${{ if eq(variables['System.TeamProject'], 'internal') }}: From f79baa9005f93516deffb8ab2b47ef9bdccf91c6 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Tue, 14 Jul 2026 10:16:41 -0700 Subject: [PATCH 4/9] Remove unused download-specific-artifact-step.yml template The template's last consumer was removed by #111454 (perf YAML moved to dotnet/performance), leaving it orphaned. Delete it rather than migrate it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a76ca5e8-9da2-412f-8f6f-5a61d5ba62f5 --- .../download-specific-artifact-step.yml | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 eng/pipelines/common/download-specific-artifact-step.yml diff --git a/eng/pipelines/common/download-specific-artifact-step.yml b/eng/pipelines/common/download-specific-artifact-step.yml deleted file mode 100644 index 1ee1161d28f43b..00000000000000 --- a/eng/pipelines/common/download-specific-artifact-step.yml +++ /dev/null @@ -1,31 +0,0 @@ -parameters: - unpackFolder: '' - cleanUnpackFolder: true - artifactFileName: '' - artifactName: '' - displayName: '' - buildId: '' - branchName: '' - pipeline: '' - project: 'public' # 'internal' or 'public' - -steps: - # Download artifact - - task: DownloadPipelineArtifact@2 - displayName: 'Download specific ${{ parameters.displayName }}' - inputs: - buildType: specific - project: ${{ parameters.project }} - definition: ${{ parameters.pipeline }} - buildVersionToDownload: specific - pipelineId: ${{ parameters.buildId }} - artifactName: '${{ parameters.artifactName }}' - targetPath: '$(Build.SourcesDirectory)/__download__/${{ parameters.artifactName }}' - - # Unzip artifact - - task: ExtractFiles@1 - displayName: 'Unzip specific ${{ parameters.displayName }}' - inputs: - archiveFilePatterns: $(Build.SourcesDirectory)/__download__/${{ parameters.artifactName }}/${{ parameters.artifactFileName }} - destinationFolder: ${{ parameters.unpackFolder }} - cleanDestinationFolder: ${{ parameters.cleanUnpackFolder }} \ No newline at end of file From ef6d696fc48be2bfd41d5cca477d2b2cb2a06a84 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Tue, 14 Jul 2026 12:41:32 -0700 Subject: [PATCH 5/9] Suffix SuperPMI logs artifact for retry-safety The SuperPMI_Logs_* PublishPipelineArtifact step runs under condition: always() with a stable artifact name, which collides on job retries. Add _Attempt$(System.JobAttempt) suffix to match the collection artifact. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a76ca5e8-9da2-412f-8f6f-5a61d5ba62f5 --- eng/pipelines/libraries/superpmi-postprocess-step.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/libraries/superpmi-postprocess-step.yml b/eng/pipelines/libraries/superpmi-postprocess-step.yml index fae59dfffcb255..a92c9da67774f1 100644 --- a/eng/pipelines/libraries/superpmi-postprocess-step.yml +++ b/eng/pipelines/libraries/superpmi-postprocess-step.yml @@ -93,5 +93,5 @@ steps: displayName: Publish SuperPMI logs inputs: targetPath: ${{ parameters.SpmiLogsLocation }} - artifactName: 'SuperPMI_Logs_${{ parameters.SuperPmiCollectionName }}_${{ parameters.SuperPmiCollectionType }}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}' + artifactName: 'SuperPMI_Logs_${{ parameters.SuperPmiCollectionName }}_${{ parameters.SuperPmiCollectionType }}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}_Attempt$(System.JobAttempt)' condition: always() From 2e424e8e834aef3d6363b8689e9c3c03652c23e4 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Tue, 14 Jul 2026 13:01:31 -0700 Subject: [PATCH 6/9] Keep perf-wasm BrowserWasm artifacts as Build Artifacts The BrowserWasm and BrowserWasmCoreCLR artifacts produced by perf-wasm-prepare-artifacts-steps.yml are consumed cross-repo by dotnet/performance, which still downloads them with DownloadBuildArtifacts@0. That task cannot read Pipeline Artifacts and logs "Unsupported artifact type: PipelineArtifact", downloading nothing, which then fails the downstream "Unzip BrowserWasm"/"Unzip BrowserWasmCoreCLR" steps with ENOENT. Publish these two artifacts as legacy Build Artifacts (inline, bypassing the migrated upload-artifact-step.yml) to preserve the cross-repo contract until the dotnet/performance consumer is migrated to DownloadPipelineArtifact@2. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a76ca5e8-9da2-412f-8f6f-5a61d5ba62f5 --- .../perf-wasm-prepare-artifacts-steps.yml | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml b/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml index a0a76570a1cb11..0bee55b3884983 100644 --- a/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml +++ b/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml @@ -30,12 +30,22 @@ steps: - script: cp -r $(Build.SourcesDirectory)/artifacts/bin/microsoft.netcore.app.ref $(Build.SourcesDirectory)/artifacts/staging displayName: "Stage ref pack directory" - - template: /eng/pipelines/common/upload-artifact-step.yml - parameters: - rootFolder: '$(Build.SourcesDirectory)/artifacts/staging' + # These artifacts are consumed by the dotnet/performance repo, which still downloads + # them with DownloadBuildArtifacts@0. That task cannot read Pipeline Artifacts + # ("Unsupported artifact type: PipelineArtifact"), so they must be published as legacy + # Build Artifacts (not via the migrated upload-artifact-step.yml) until the + # performance-repo consumer is migrated to DownloadPipelineArtifact@2. + - task: ArchiveFiles@2 + displayName: 'Zip Browser Wasm Artifacts' + inputs: + rootFolderOrFile: '$(Build.SourcesDirectory)/artifacts/staging' + archiveFile: '$(Build.StagingDirectory)/${{ parameters.artifactName }}.tar.gz' + archiveType: tar + tarCompression: gz includeRootFolder: true - displayName: Browser Wasm Artifacts - artifactName: ${{ parameters.artifactName }} - archiveType: tar - tarCompression: gz - archiveExtension: '.tar.gz' + + - task: PublishBuildArtifacts@1 + displayName: 'Publish Browser Wasm Artifacts' + inputs: + PathtoPublish: '$(Build.StagingDirectory)/${{ parameters.artifactName }}.tar.gz' + ArtifactName: ${{ parameters.artifactName }} From d7a59e188c35519b7cc099f885bef384d3f0f366 Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Wed, 15 Jul 2026 08:25:09 -0700 Subject: [PATCH 7/9] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../performance/templates/perf-wasm-prepare-artifacts-steps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml b/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml index 0bee55b3884983..97b2df99089667 100644 --- a/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml +++ b/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml @@ -36,7 +36,7 @@ steps: # Build Artifacts (not via the migrated upload-artifact-step.yml) until the # performance-repo consumer is migrated to DownloadPipelineArtifact@2. - task: ArchiveFiles@2 - displayName: 'Zip Browser Wasm Artifacts' + displayName: 'Archive Browser Wasm Artifacts (tar.gz)' inputs: rootFolderOrFile: '$(Build.SourcesDirectory)/artifacts/staging' archiveFile: '$(Build.StagingDirectory)/${{ parameters.artifactName }}.tar.gz' From 7ef84827d96840756625a7161d301ba0ea12bee6 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Wed, 15 Jul 2026 08:28:06 -0700 Subject: [PATCH 8/9] Publish perf-wasm BrowserWasm artifacts as Pipeline Artifacts Per review feedback, publish BrowserWasm/BrowserWasmCoreCLR via the shared upload-artifact-step.yml (Pipeline Artifact) rather than the interim legacy Build Artifact workaround. The dotnet/performance consumer is being updated to DownloadPipelineArtifact@2 to match. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a76ca5e8-9da2-412f-8f6f-5a61d5ba62f5 --- .../perf-wasm-prepare-artifacts-steps.yml | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml b/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml index 97b2df99089667..a0a76570a1cb11 100644 --- a/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml +++ b/eng/pipelines/performance/templates/perf-wasm-prepare-artifacts-steps.yml @@ -30,22 +30,12 @@ steps: - script: cp -r $(Build.SourcesDirectory)/artifacts/bin/microsoft.netcore.app.ref $(Build.SourcesDirectory)/artifacts/staging displayName: "Stage ref pack directory" - # These artifacts are consumed by the dotnet/performance repo, which still downloads - # them with DownloadBuildArtifacts@0. That task cannot read Pipeline Artifacts - # ("Unsupported artifact type: PipelineArtifact"), so they must be published as legacy - # Build Artifacts (not via the migrated upload-artifact-step.yml) until the - # performance-repo consumer is migrated to DownloadPipelineArtifact@2. - - task: ArchiveFiles@2 - displayName: 'Archive Browser Wasm Artifacts (tar.gz)' - inputs: - rootFolderOrFile: '$(Build.SourcesDirectory)/artifacts/staging' - archiveFile: '$(Build.StagingDirectory)/${{ parameters.artifactName }}.tar.gz' - archiveType: tar - tarCompression: gz + - template: /eng/pipelines/common/upload-artifact-step.yml + parameters: + rootFolder: '$(Build.SourcesDirectory)/artifacts/staging' includeRootFolder: true - - - task: PublishBuildArtifacts@1 - displayName: 'Publish Browser Wasm Artifacts' - inputs: - PathtoPublish: '$(Build.StagingDirectory)/${{ parameters.artifactName }}.tar.gz' - ArtifactName: ${{ parameters.artifactName }} + displayName: Browser Wasm Artifacts + artifactName: ${{ parameters.artifactName }} + archiveType: tar + tarCompression: gz + archiveExtension: '.tar.gz' From 000753ddd43da93f40b8203151bdbf6e9ac4a4f8 Mon Sep 17 00:00:00 2001 From: "Matt Mitchell (.NET)" Date: Fri, 17 Jul 2026 11:09:21 -0700 Subject: [PATCH 9/9] Migrate new CoreCLR wasm runtime pack download to Pipeline Artifact main added a "Download built nugets for CoreCLR runtime" step to the mono Wasm.Build.Tests template (browser-wasm-build-tests.yml) that still uses DownloadBuildArtifacts@0. This PR publishes the consumed artifact (BuildArtifacts_browser_wasm__Release_CoreCLR) as a Pipeline Artifact, which DownloadBuildArtifacts@0 cannot read ("Unsupported artifact type: PipelineArtifact") -- it downloads nothing, so the subsequent "Copy CoreCLR runtime pack" step fails with "Not found SourceFolder". Migrate the step to DownloadPipelineArtifact@2 with a targetPath that matches the existing CopyFiles SourceFolder, consistent with the other wasm build-test download steps. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a76ca5e8-9da2-412f-8f6f-5a61d5ba62f5 --- eng/pipelines/common/templates/browser-wasm-build-tests.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/common/templates/browser-wasm-build-tests.yml b/eng/pipelines/common/templates/browser-wasm-build-tests.yml index a2f3a9bb4bb4e4..994b4fc7045f51 100644 --- a/eng/pipelines/common/templates/browser-wasm-build-tests.yml +++ b/eng/pipelines/common/templates/browser-wasm-build-tests.yml @@ -95,13 +95,12 @@ jobs: # the CoreCLR browser-wasm runtime pack, so installing the workload for testing # requires the pack to be present in the local package feed. - ${{ if eq(parameters.includeCoreClrRuntimePack, true) }}: - - task: DownloadBuildArtifacts@0 + - task: DownloadPipelineArtifact@2 displayName: Download built nugets for CoreCLR runtime inputs: buildType: current artifactName: BuildArtifacts_browser_wasm_$(_hostedOs)_Release_CoreCLR - downloadType: single - downloadPath: '$(Build.SourcesDirectory)/artifacts' + targetPath: '$(Build.SourcesDirectory)/artifacts/BuildArtifacts_browser_wasm_$(_hostedOs)_Release_CoreCLR' - task: CopyFiles@2 displayName: Copy CoreCLR runtime pack