diff --git a/eng/pipelines/register-build-jobs.yml b/eng/pipelines/register-build-jobs.yml index de7da9a05f2..7b3aa53a1bd 100644 --- a/eng/pipelines/register-build-jobs.yml +++ b/eng/pipelines/register-build-jobs.yml @@ -3,6 +3,13 @@ parameters: performanceRepoAlias: self buildType: [] mauiFramework: '' + # repoName is forwarded into each register-build-job invocation so the + # buildInfo.json marker lands under builds/{repoName}/buildArtifacts/..., + # matching the layout written by upload-build-artifacts-job.yml. Defaults + # to 'runtime' for back-compat with the existing dotnet/runtime perf-build + # pipeline; callers from other tenants (e.g. dotnet/aspnetcore) pass + # repoName explicitly. + repoName: 'runtime' jobs: - ${{ each type in parameters.buildType }}: @@ -10,3 +17,4 @@ jobs: parameters: buildType: ${{ type }} buildId: $(Build.BuildId) + repoName: ${{ parameters.repoName }} diff --git a/eng/pipelines/templates/register-build-job.yml b/eng/pipelines/templates/register-build-job.yml index 249d15a5eae..7a275f64f2b 100644 --- a/eng/pipelines/templates/register-build-job.yml +++ b/eng/pipelines/templates/register-build-job.yml @@ -1,6 +1,12 @@ parameters: buildType: '' buildId: '' + # repoName is forwarded into the BCS blob path + # (builds/{repoName}/buildArtifacts/...). Defaults to 'runtime' for + # back-compat with the existing dotnet/runtime perf-build pipeline; + # callers from other tenants (e.g. dotnet/aspnetcore) pass repoName + # explicitly. + repoName: 'runtime' jobs: - job: RegisterBuild_${{ parameters.buildType }} @@ -14,4 +20,4 @@ jobs: scriptType: 'pscore' scriptLocation: 'inlineScript' inlineScript: | - az storage blob upload --auth-mode login --account-name pvscmdupload --container-name '$web' --data '{"buildId":"${{ parameters.buildId }}"}' --name "builds/runtime/buildArtifacts/${{ variables['Build.SourceVersion'] }}/${{ parameters.buildType }}/buildInfo.json" --overwrite true + az storage blob upload --auth-mode login --account-name pvscmdupload --container-name '$web' --data '{"buildId":"${{ parameters.buildId }}"}' --name "builds/${{ parameters.repoName }}/buildArtifacts/${{ variables['Build.SourceVersion'] }}/${{ parameters.buildType }}/buildInfo.json" --overwrite true diff --git a/eng/pipelines/templates/upload-build-artifacts-job.yml b/eng/pipelines/templates/upload-build-artifacts-job.yml index 594542b3f36..5da08e5553d 100644 --- a/eng/pipelines/templates/upload-build-artifacts-job.yml +++ b/eng/pipelines/templates/upload-build-artifacts-job.yml @@ -2,6 +2,12 @@ parameters: buildType: '' dependencyJobName: '' artifacts: [] + # repoName controls the {repoName} segment of the BCS blob path: + # builds/{repoName}/buildArtifacts/{sha}/{buildType}/{file} + # Defaults to 'runtime' for back-compat with the existing runtime perf-build pipeline. + # Callers building a different repo (e.g. dotnet/aspnetcore) pass repoName explicitly + # so that the upload lands at a tenant-specific path the indexer/crank then read. + repoName: 'runtime' jobs: - ${{ each artifact in parameters.artifacts }}: @@ -14,7 +20,7 @@ jobs: displayName: Download Build Artifact ${{ artifact.artifactName }} artifact: ${{ artifact.artifactName }} - ${{ each fileName in artifact.files }}: - - script: echo "pvscmdupload/\$web/builds/runtime/buildArtifacts/${{ variables['Build.SourceVersion'] }}/${{ parameters.buildType }}/${{ fileName }}" + - script: echo "pvscmdupload/\$web/builds/${{ parameters.repoName }}/buildArtifacts/${{ variables['Build.SourceVersion'] }}/${{ parameters.buildType }}/${{ fileName }}" displayName: 'Artifact upload path' - task: AzureCLI@2 displayName: 'Upload ${{ fileName }} file' @@ -23,4 +29,4 @@ jobs: scriptType: 'pscore' scriptLocation: 'inlineScript' inlineScript: | - az storage blob upload --auth-mode login --account-name pvscmdupload --container-name '$web' --file "$(Pipeline.Workspace)/${{ artifact.artifactName }}/${{ fileName }}" --name "builds/runtime/buildArtifacts/${{ variables['Build.SourceVersion'] }}/${{ parameters.buildType }}/${{ fileName }}" --overwrite true + az storage blob upload --auth-mode login --account-name pvscmdupload --container-name '$web' --file "$(Pipeline.Workspace)/${{ artifact.artifactName }}/${{ fileName }}" --name "builds/${{ parameters.repoName }}/buildArtifacts/${{ variables['Build.SourceVersion'] }}/${{ parameters.buildType }}/${{ fileName }}" --overwrite true diff --git a/eng/pipelines/upload-build-artifacts-jobs.yml b/eng/pipelines/upload-build-artifacts-jobs.yml index c510e30f3db..b8df08876fd 100644 --- a/eng/pipelines/upload-build-artifacts-jobs.yml +++ b/eng/pipelines/upload-build-artifacts-jobs.yml @@ -2,141 +2,161 @@ parameters: runtimeRepoAlias: runtime performanceRepoAlias: self buildType: [] - + # repoName is forwarded into the BCS blob path (builds/{repoName}/buildArtifacts/...) + # by each upload-build-artifacts-job.yml invocation. Defaults to 'runtime' for + # back-compat with the existing dotnet/runtime perf-build pipeline; callers from + # other tenants (e.g. dotnet/aspnetcore) pass repoName explicitly. + repoName: 'runtime' + jobs: - ${{ if containsValue(parameters.buildType, 'coreclr_arm64_linux') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'coreclr_arm64_linux' dependencyJobName: build_linux_arm64_release_coreclr + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BuildArtifacts_linux_arm64_Release_coreclr' files: [ 'BuildArtifacts_linux_arm64_Release_coreclr.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'coreclr_arm64_windows') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'coreclr_arm64_windows' dependencyJobName: build_windows_arm64_release_coreclr + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BuildArtifacts_windows_arm64_Release_coreclr' files: [ 'BuildArtifacts_windows_arm64_Release_coreclr.zip' ] - + - ${{ if containsValue(parameters.buildType, 'coreclr_x64_linux') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'coreclr_x64_linux' dependencyJobName: build_linux_x64_release_coreclr + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BuildArtifacts_linux_x64_Release_coreclr' files: [ 'BuildArtifacts_linux_x64_Release_coreclr.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'coreclr_x64_windows') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'coreclr_x64_windows' dependencyJobName: build_windows_x64_release_coreclr + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BuildArtifacts_windows_x64_Release_coreclr' files: [ 'BuildArtifacts_windows_x64_Release_coreclr.zip' ] - + - ${{ if containsValue(parameters.buildType, 'coreclr_x86_windows') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'coreclr_x86_windows' dependencyJobName: build_windows_x86_release_coreclr + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BuildArtifacts_windows_x86_Release_coreclr' files: [ 'BuildArtifacts_windows_x86_Release_coreclr.zip' ] - + - ${{ if containsValue(parameters.buildType, 'coreclr_arm64_android') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'coreclr_arm64_android' dependencyJobName: build_android_arm64_release_AndroidCoreCLR + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'AndroidHelloWorldArm64CoreCLR' files: [ 'AndroidHelloWorldArm64CoreCLR.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'wasm') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'wasm' dependencyJobName: build_browser_wasm_linux_Release_wasm + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BrowserWasm' files: [ 'BrowserWasm.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'monoAot_arm64_linux') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'monoAot_arm64_linux' dependencyJobName: build_linux_arm64_release_AOT + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'LinuxMonoAOTarm64' files: [ 'LinuxMonoAOTarm64.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'monoAot_x64_linux') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'monoAot_x64_linux' dependencyJobName: build_linux_x64_release_AOT + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'LinuxMonoAOTx64' files: [ 'LinuxMonoAOTx64.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'mono_x64_linux') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'mono_x64_linux' dependencyJobName: build_linux_x64_release_mono + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BuildArtifacts_linux_x64_Release_mono' files: [ 'BuildArtifacts_linux_x64_Release_mono.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'mono_arm64_linux') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'mono_arm64_linux' dependencyJobName: build_linux_arm64_release_mono + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BuildArtifacts_linux_arm64_Release_mono' files: [ 'BuildArtifacts_linux_arm64_Release_mono.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'mono_arm64_android') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'mono_arm64_android' dependencyJobName: build_android_arm64_release_AndroidMono + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'AndroidHelloWorldArm64Mono' files: [ 'AndroidHelloWorldArm64Mono.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'mono_arm64_ios') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'mono_arm64_ios' dependencyJobName: build_ios_arm64_release_iOSMono + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'iOSSampleAppMonoFullAOTLLVMNoSymbols' files: [ 'iOSSampleAppMonoFullAOTLLVMNoSymbols.zip' ] - artifactName: 'iOSSampleAppMonoFullAOTNoLLVMNoSymbols' files: [ 'iOSSampleAppMonoFullAOTNoLLVMNoSymbols.zip' ] - + - ${{ if containsValue(parameters.buildType, 'monoBDN_arm64_android') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'monoBDN_arm64_android' dependencyJobName: build_ios_arm64_release_PerfBDNApp #build_android_arm64_release_Mono_Packs + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'AndroidBDNApk' files: [ 'AndroidBDNApk.tar.gz' ] - + - ${{ if containsValue(parameters.buildType, 'nativeAot_arm64_ios') }}: - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} parameters: buildType: 'nativeAot_arm64_ios' dependencyJobName: build_ios_arm64_release_iOSNativeAOT + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'iOSSampleAppNativeAOTNoSymbols' files: [ 'iOSSampleAppNativeAOTNoSymbols.zip' ] @@ -146,6 +166,7 @@ jobs: parameters: buildType: 'coreclr_arm64_ios' dependencyJobName: build_ios_arm64_release_iOSCoreCLR + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'iOSSampleAppCoreCLRInterpreterNoSymbols' files: [ 'iOSSampleAppCoreCLRInterpreterNoSymbols.zip' ] @@ -157,6 +178,7 @@ jobs: parameters: buildType: 'wasm_coreclr' dependencyJobName: build_browser_wasm_linux_Release_wasm_coreclr + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BrowserWasmCoreCLR' files: [ 'BrowserWasmCoreCLR.tar.gz' ] @@ -166,6 +188,64 @@ jobs: parameters: buildType: 'coreclr_r2r_interpreter' dependencyJobName: build_linux_x64_release_coreclr_r2r_interpreter + repoName: ${{ parameters.repoName }} artifacts: - artifactName: 'BuildArtifacts_linux_x64_Release_coreclr_r2r_interpreter' - files: [ 'BuildArtifacts_linux_x64_Release_coreclr_r2r_interpreter.tar.gz' ] \ No newline at end of file + files: [ 'BuildArtifacts_linux_x64_Release_coreclr_r2r_interpreter.tar.gz' ] + + # =========================================================================== + # ASP.NET Core upload cases (consumed by dotnet/aspnetcore's perf-build + # pipeline). The dependencyJobName values mirror the jobName parameters used + # in dotnet/aspnetcore/.azure/pipelines/perf-build.yml. The artifactName + # values must match the artifact `name:` field published by those build jobs. + # =========================================================================== + + - ${{ if containsValue(parameters.buildType, 'aspnetcore_x64_linux') }}: + - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} + parameters: + buildType: 'aspnetcore_x64_linux' + dependencyJobName: Linux_x64_build + repoName: ${{ parameters.repoName }} + artifacts: + - artifactName: 'BuildArtifacts_linux_x64_Release_aspnetcore' + files: [ 'BuildArtifacts_linux_x64_Release_aspnetcore.tar.gz' ] + + - ${{ if containsValue(parameters.buildType, 'aspnetcore_arm64_linux') }}: + - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} + parameters: + buildType: 'aspnetcore_arm64_linux' + dependencyJobName: Linux_arm64_build + repoName: ${{ parameters.repoName }} + artifacts: + - artifactName: 'BuildArtifacts_linux_arm64_Release_aspnetcore' + files: [ 'BuildArtifacts_linux_arm64_Release_aspnetcore.tar.gz' ] + + - ${{ if containsValue(parameters.buildType, 'aspnetcore_x64_windows') }}: + - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} + parameters: + buildType: 'aspnetcore_x64_windows' + dependencyJobName: Windows_build + repoName: ${{ parameters.repoName }} + artifacts: + - artifactName: 'BuildArtifacts_windows_x64_Release_aspnetcore' + files: [ 'BuildArtifacts_windows_x64_Release_aspnetcore.zip' ] + + - ${{ if containsValue(parameters.buildType, 'aspnetcore_arm64_windows') }}: + - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} + parameters: + buildType: 'aspnetcore_arm64_windows' + dependencyJobName: Windows_build + repoName: ${{ parameters.repoName }} + artifacts: + - artifactName: 'BuildArtifacts_windows_arm64_Release_aspnetcore' + files: [ 'BuildArtifacts_windows_arm64_Release_aspnetcore.zip' ] + + - ${{ if containsValue(parameters.buildType, 'aspnetcore_x86_windows') }}: + - template: /eng/pipelines/templates/upload-build-artifacts-job.yml@${{ parameters.performanceRepoAlias }} + parameters: + buildType: 'aspnetcore_x86_windows' + dependencyJobName: Windows_build + repoName: ${{ parameters.repoName }} + artifacts: + - artifactName: 'BuildArtifacts_windows_x86_Release_aspnetcore' + files: [ 'BuildArtifacts_windows_x86_Release_aspnetcore.zip' ]