From b067ce009ab5992168d1d635a9a9beb387008608 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Fri, 19 Apr 2024 09:54:30 -0700 Subject: [PATCH] Reuse more templates in our build (#101197) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alexander Köplinger --- eng/pipelines/common/global-build-job.yml | 4 + .../templates/publish-pipeline-artifacts.yml | 17 --- .../mono/templates/generate-offsets.yml | 88 ------------- .../mono/templates/workloads-build.yml | 117 ----------------- .../jobs/prepare-signed-artifacts.yml | 119 ++++++++--------- eng/pipelines/runtime-official.yml | 121 +++++++++++++++--- eng/pipelines/runtime.yml | 47 ++++--- src/workloads/workloads.csproj | 4 +- 8 files changed, 197 insertions(+), 320 deletions(-) delete mode 100644 eng/pipelines/common/templates/publish-pipeline-artifacts.yml delete mode 100644 eng/pipelines/mono/templates/generate-offsets.yml delete mode 100644 eng/pipelines/mono/templates/workloads-build.yml diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml index 1812fc318bb2ee..8273417557052b 100644 --- a/eng/pipelines/common/global-build-job.yml +++ b/eng/pipelines/common/global-build-job.yml @@ -34,6 +34,7 @@ parameters: extraVariablesTemplates: [] preBuildSteps: [] templatePath: 'templates' + templateContext: '' jobs: - template: /eng/common/${{ parameters.templatePath }}/job/job.yml @@ -51,6 +52,9 @@ jobs: enablePublishTestResults: ${{ parameters.enablePublishTestResults }} testResultsFormat: ${{ parameters.testResultsFormat }} + ${{ if ne(parameters.templateContext, '') }}: + templateContext: ${{ parameters.templateContext }} + artifacts: publish: logs: diff --git a/eng/pipelines/common/templates/publish-pipeline-artifacts.yml b/eng/pipelines/common/templates/publish-pipeline-artifacts.yml deleted file mode 100644 index 81f292ec5528ce..00000000000000 --- a/eng/pipelines/common/templates/publish-pipeline-artifacts.yml +++ /dev/null @@ -1,17 +0,0 @@ -parameters: -- name: displayName - type: string -- name: inputs - type: object -- name: isOfficialBuild - type: boolean - -steps: - - ${{ if parameters.isOfficialBuild }}: - - task: 1ES.PublishPipelineArtifact@1 - displayName: ${{ parameters.displayName }} - inputs: ${{ parameters.inputs }} - - ${{ else }}: - - task: PublishPipelineArtifact@1 - displayName: ${{ parameters.displayName }} - inputs: ${{ parameters.inputs }} \ No newline at end of file diff --git a/eng/pipelines/mono/templates/generate-offsets.yml b/eng/pipelines/mono/templates/generate-offsets.yml deleted file mode 100644 index 8d8d781dd3262e..00000000000000 --- a/eng/pipelines/mono/templates/generate-offsets.yml +++ /dev/null @@ -1,88 +0,0 @@ -parameters: - buildConfig: 'Debug' - osGroup: '' - osSubGroup: '' - platform: '' - container: '' - timeoutInMinutes: '' - variables: {} - pool: '' - condition: true - isOfficialBuild: false - templatePath: 'templates' - -### Product build -jobs: -- template: /eng/pipelines/common/templates/runtimes/xplat-job.yml - parameters: - templatePath: ${{ parameters.templatePath }} - buildConfig: ${{ parameters.buildConfig }} - osGroup: ${{ parameters.osGroup }} - osSubGroup: ${{ parameters.osSubGroup }} - helixType: 'build/product/' - enableMicrobuild: true - pool: ${{ parameters.pool }} - condition: ${{ parameters.condition }} - dependOnEvaluatePaths: ${{ parameters.dependOnEvaluatePaths }} - logsName: 'BuildLogs_Attempt$(System.JobAttempt)_Mono_Offsets_$(osGroup)$(osSubGroup)' - - # Compute job name from template parameters - name: ${{ format('mono_{0}{1}_offsets', parameters.osGroup, parameters.osSubGroup) }} - displayName: ${{ format('Mono {0}{1} AOT offsets', parameters.osGroup, parameters.osSubGroup) }} - - # Run all steps in the container. - # Note that the containers are defined in platform-matrix.yml - container: ${{ parameters.container }} - - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - - gatherAssetManifests: true - variables: - - name: osGroup - value: ${{ parameters.osGroup }} - - name: osSubGroup - value: ${{ parameters.osSubGroup }} - - name: officialBuildIdArg - value: '' - - ${{ if eq(parameters.isOfficialBuild, true) }}: - - name: officialBuildIdArg - value: '/p:OfficialBuildId=$(Build.BuildNumber)' - - name: osOverride - value: -os linux - - name: archType - value: x64 - - ${{ parameters.variables }} - - steps: - - # Install native dependencies - # Linux builds use docker images with dependencies preinstalled, - # and FreeBSD builds use a build agent with dependencies - # preinstalled, so we only need this step for OSX and Windows. - - ${{ if in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator') }}: - - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) - displayName: Install native dependencies - - # Build - - ${{ if ne(parameters.osGroup, 'windows') }}: - - script: ./build$(scriptExt) -subset mono.aotcross -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) /p:MonoGenerateOffsetsOSGroups=$(osGroup) - displayName: Generate AOT offsets - - ${{ if eq(parameters.osGroup, 'windows') }}: - - script: build$(scriptExt) -subset mono.aotcross -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) /p:MonoGenerateOffsetsOSGroups=$(osGroup) - displayName: Generate AOT offsets - - # Upload offset files - - task: CopyFiles@2 - displayName: Collect offset files - inputs: - sourceFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/' - contents: '**/offsets-*.h' - targetFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles/' - - - template: /eng/pipelines/common/templates/publish-pipeline-artifacts.yml - parameters: - displayName: Upload offset files - isOfficialBuild: ${{ parameters.isOfficialBuild }} - inputs: - targetPath: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles' - artifactName: 'Mono_Offsets_$(osGroup)$(osSubGroup)' diff --git a/eng/pipelines/mono/templates/workloads-build.yml b/eng/pipelines/mono/templates/workloads-build.yml deleted file mode 100644 index 89404db6b29201..00000000000000 --- a/eng/pipelines/mono/templates/workloads-build.yml +++ /dev/null @@ -1,117 +0,0 @@ -parameters: - archType: '' - buildConfig: '' - container: '' - dependsOn: [] - isOfficialBuild: false - osGroup: '' - osSubgroup: '' - platform: '' - pool: '' - runtimeVariant: '' - testGroup: '' - timeoutInMinutes: '' - templatePath: 'templates' - variables: {} - -jobs: -- template: /eng/pipelines/common/templates/runtimes/xplat-job.yml - parameters: - templatePath: ${{ parameters.templatePath }} - archType: ${{ parameters.archType }} - buildConfig: ${{ parameters.buildConfig }} - container: ${{ parameters.container }} - condition: and(succeeded(), ${{ parameters.isOfficialBuild }}) - helixType: 'build/product/' - osGroup: ${{ parameters.osGroup }} - osSubgroup: ${{ parameters.osSubgroup }} - pool: ${{ parameters.pool }} - runtimeVariant: ${{ parameters.runtimeVariant }} - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - logsName: WorkloadLogs_Attempt$(System.JobAttempt) - - dependsOn: ${{ parameters.dependsOn }} - - name: workloadsbuild - displayName: Build Workloads - - variables: - - name: officialBuildIdArg - value: '' - - ${{ if eq(parameters.isOfficialBuild, true) }}: - - name: officialBuildIdArg - value: '/p:OfficialBuildId=$(Build.BuildNumber)' - - name: SignType - value: $[ coalesce(variables.OfficialSignType, 'real') ] - - name: workloadPackagesPath - value: $(Build.SourcesDirectory)/artifacts/workloadPackages - - name: workloadArtifactsPath - value: $(Build.SourcesDirectory)/artifacts/workloads - - ${{ parameters.variables }} - - steps: - - task: DownloadPipelineArtifact@2 - inputs: - artifact: 'IntermediateArtifacts' - path: $(workloadPackagesPath) - patterns: | - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.android-*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.browser-wasm*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.wasi-wasm*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.wasi-wasm*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.android-*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.browser-wasm*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.ios-*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.iossimulator-*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.tvos-*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.tvossimulator-*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.wasi-wasm*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.Current.Manifest*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net8.Manifest*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoTargets.Sdk*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoAOTCompiler.Task*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Sdk*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Wasi*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Templates*.nupkg - IntermediateArtifacts/windows_arm64/Shipping/Microsoft.NETCore.App.Runtime.win-arm64*.nupkg - IntermediateArtifacts/windows_x64/Shipping/Microsoft.NETCore.App.Runtime.win-x64*.nupkg - IntermediateArtifacts/windows_x86/Shipping/Microsoft.NETCore.App.Runtime.win-x86*.nupkg - IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Sdk.WebAssembly.Pack*.nupkg - - - task: CopyFiles@2 - displayName: Flatten packages - inputs: - sourceFolder: $(workloadPackagesPath) - contents: '*/Shipping/*.nupkg' - cleanTargetFolder: false - targetFolder: $(workloadPackagesPath) - flattenFolders: true - - - script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -subset mono.workloads -arch $(archType) -c $(buildConfig) $(officialBuildIdArg) -ci - displayName: Build workload artifacts - - # Upload packages wrapping msis - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: workloads - - # Delete wixpdb files before they are uploaded to artifacts - - task: DeleteFiles@1 - displayName: Delete wixpdb's - inputs: - SourceFolder: $(workloadArtifactsPath) - Contents: '*.wixpdb' - - # Upload artifacts to be used for generating VS components - - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml - parameters: - name: workloads-vs - publishPackagesCondition: false - publishVSSetupCondition: true diff --git a/eng/pipelines/official/jobs/prepare-signed-artifacts.yml b/eng/pipelines/official/jobs/prepare-signed-artifacts.yml index 24fd2df48d74be..f52d685e964ef7 100644 --- a/eng/pipelines/official/jobs/prepare-signed-artifacts.yml +++ b/eng/pipelines/official/jobs/prepare-signed-artifacts.yml @@ -1,76 +1,65 @@ parameters: - dependsOn: [] PublishRidAgnosticPackagesFromPlatform: '' isOfficialBuild: false logArtifactName: 'Logs-PrepareSignedArtifacts_Attempt$(System.JobAttempt)' jobs: -- job: PrepareSignedArtifacts - displayName: Prepare Signed Artifacts - dependsOn: ${{ parameters.dependsOn }} - pool: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals 1es-windows-2022 - # Double the default timeout. - timeoutInMinutes: 240 - workspace: - clean: all +- template: /eng/common/templates-official/job/job.yml + parameters: + name: 'PrepareSignedArtifacts' + displayName: 'Prepare Signed Artifacts' - variables: - - name: SignType - value: $[ coalesce(variables.OfficialSignType, 'real') ] + pool: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals 1es-windows-2022 - templateContext: - outputs: - - output: pipelineArtifact - displayName: 'Publish BuildLogs' - condition: succeededOrFailed() - targetPath: '$(Build.StagingDirectory)\BuildLogs' - artifactName: ${{ parameters.logArtifactName }} + # Double the default timeout. + timeoutInMinutes: 240 - steps: - - checkout: self - clean: true - fetchDepth: 20 + workspace: + clean: all - - ${{ if eq(parameters.isOfficialBuild, true) }}: - - task: NuGetAuthenticate@1 + enableMicrobuild: true - - task: MicroBuildSigningPlugin@2 - displayName: Install MicroBuild plugin for Signing - inputs: - signType: $(SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - continueOnError: false - condition: and(succeeded(), - in(variables['SignType'], 'real', 'test')) - - - task: DownloadBuildArtifacts@0 - displayName: Download IntermediateArtifacts - inputs: - artifactName: IntermediateArtifacts - downloadPath: $(Build.SourcesDirectory)\artifacts\PackageDownload - checkDownloadedFiles: true - - - script: >- - build.cmd -ci - -subset publish - -configuration Release - /p:PublishRidAgnosticPackagesFromPlatform=${{ parameters.PublishRidAgnosticPackagesFromPlatform }} - /p:OfficialBuildId=$(Build.BuildNumber) - /p:SignType=$(SignType) - /p:DotNetSignType=$(SignType) - /bl:$(Build.SourcesDirectory)\prepare-artifacts.binlog - displayName: Prepare artifacts and upload to build - - - task: CopyFiles@2 - displayName: Copy Files to $(Build.StagingDirectory)\BuildLogs - inputs: - SourceFolder: '$(Build.SourcesDirectory)' - Contents: | - **/*.log - **/*.binlog - TargetFolder: '$(Build.StagingDirectory)\BuildLogs' - continueOnError: true - condition: succeededOrFailed() \ No newline at end of file + variables: + - name: '_SignType' + value: $[ coalesce(variables.OfficialSignType, 'real') ] + + templateContext: + inputs: + - input: checkout + repository: self + clean: true + fetchDepth: 20 + - input: pipelineArtifact + artifactName: IntermediateArtifacts + targetPath: $(Build.SourcesDirectory)\artifacts\PackageDownload + outputs: + - output: pipelineArtifact + displayName: 'Publish BuildLogs' + condition: succeededOrFailed() + targetPath: '$(Build.StagingDirectory)\BuildLogs' + artifactName: ${{ parameters.logArtifactName }} + + steps: + - script: >- + build.cmd -ci + -subset publish + -configuration Release + /p:PublishRidAgnosticPackagesFromPlatform=${{ parameters.PublishRidAgnosticPackagesFromPlatform }} + /p:OfficialBuildId=$(Build.BuildNumber) + /p:SignType=$(_SignType) + /p:DotNetSignType=$(_SignType) + /bl:$(Build.SourcesDirectory)\prepare-artifacts.binlog + displayName: Prepare artifacts and upload to build + + - task: CopyFiles@2 + displayName: Copy Files to $(Build.StagingDirectory)\BuildLogs + inputs: + SourceFolder: '$(Build.SourcesDirectory)' + Contents: | + **/*.log + **/*.binlog + TargetFolder: '$(Build.StagingDirectory)\BuildLogs' + continueOnError: true + condition: succeededOrFailed() \ No newline at end of file diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml index 23f19405abea7c..cf856d94df6164 100644 --- a/eng/pipelines/runtime-official.yml +++ b/eng/pipelines/runtime-official.yml @@ -381,11 +381,12 @@ extends: parameters: name: MonoRuntimePacks + # Build Mono AOT offset headers once, for consumption elsewhere # - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + jobTemplate: /eng/pipelines/common/global-build-job.yml buildConfig: release platforms: - android_x64 @@ -394,9 +395,31 @@ extends: - tvos_arm64 - ios_arm64 - maccatalyst_x64 + variables: + - name: _osParameter + value: -os linux + - name: _archParameter + value: -arch x64 jobParameters: templatePath: 'templates-official' - isOfficialBuild: ${{ variables.isOfficialBuild }} + nameSuffix: MonoAOTOffsets + buildArgs: -s mono.aotcross -c $(_BuildConfig) /p:MonoGenerateOffsetsOSGroups=$(osGroup) + postBuildSteps: + # Upload offset files + - task: CopyFiles@2 + displayName: Collect offset files + inputs: + sourceFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/' + contents: '**/offsets-*.h' + targetFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles/' + + templateContext: + outputs: + - output: pipelineArtifact + displayName: 'Publish Mono AOT offsets' + condition: succeeded() + targetPath: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles' + artifactName: 'Mono_Offsets_$(osGroup)$(osSubGroup)' # # Build Mono release AOT cross-compilers @@ -418,9 +441,9 @@ extends: nameSuffix: CrossAOT_Mono runtimeVariant: crossaot dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_wasi_offsets + - build_android_x64_release_MonoAOTOffsets + - build_browser_wasm_linux_release_MonoAOTOffsets + - build_wasi_wasm_linux_release_MonoAOTOffsets monoCrossAOTTargetOS: - android - browser @@ -446,9 +469,9 @@ extends: nameSuffix: CrossAOT_Mono runtimeVariant: crossaot dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_wasi_offsets + - build_android_x64_release_MonoAOTOffsets + - build_browser_wasm_linux_release_MonoAOTOffsets + - build_wasi_wasm_linux_release_MonoAOTOffsets monoCrossAOTTargetOS: - android - browser @@ -474,12 +497,12 @@ extends: nameSuffix: CrossAOT_Mono runtimeVariant: crossaot dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_wasi_offsets - - mono_tvos_offsets - - mono_ios_offsets - - mono_maccatalyst_offsets + - build_android_x64_release_MonoAOTOffsets + - build_browser_wasm_linux_release_MonoAOTOffsets + - build_wasi_wasm_linux_release_MonoAOTOffsets + - build_tvos_arm64_release_MonoAOTOffsets + - build_ios_arm64_release_MonoAOTOffsets + - build_maccatalyst_x64_release_MonoAOTOffsets monoCrossAOTTargetOS: - android - browser @@ -599,12 +622,80 @@ extends: # - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/mono/templates/workloads-build.yml + jobTemplate: /eng/pipelines/common/global-build-job.yml buildConfig: release platforms: - windows_x64 jobParameters: templatePath: 'templates-official' + nameSuffix: Workloads + preBuildSteps: + - task: DownloadPipelineArtifact@2 + inputs: + artifact: 'IntermediateArtifacts' + path: $(Build.SourcesDirectory)/artifacts/workloadPackages + patterns: | + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.android-*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.browser-wasm*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.wasi-wasm*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.wasi-wasm*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.android-*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.browser-wasm*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.ios-*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.iossimulator-*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.tvos-*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.tvossimulator-*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.wasi-wasm*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.Current.Manifest*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Workload.Mono.ToolChain.net8.Manifest*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoTargets.Sdk*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoAOTCompiler.Task*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Sdk*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Wasi*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Templates*.nupkg + IntermediateArtifacts/windows_arm64/Shipping/Microsoft.NETCore.App.Runtime.win-arm64*.nupkg + IntermediateArtifacts/windows_x64/Shipping/Microsoft.NETCore.App.Runtime.win-x64*.nupkg + IntermediateArtifacts/windows_x86/Shipping/Microsoft.NETCore.App.Runtime.win-x86*.nupkg + IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Sdk.WebAssembly.Pack*.nupkg + + - task: CopyFiles@2 + displayName: Flatten packages + inputs: + sourceFolder: $(Build.SourcesDirectory)/artifacts/workloadPackages + contents: '*/Shipping/*.nupkg' + cleanTargetFolder: false + targetFolder: $(Build.SourcesDirectory)/artifacts/workloadPackages + flattenFolders: true + + buildArgs: -s mono.workloads -c $(_BuildConfig) /p:PackageSource=$(Build.SourcesDirectory)/artifacts/workloadPackages /p:WorkloadOutputPath=$(Build.SourcesDirectory)/artifacts/workloads + + postBuildSteps: + # Upload packages wrapping msis + - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml + parameters: + name: workloads + + # Delete wixpdb files before they are uploaded to artifacts + - task: DeleteFiles@1 + displayName: Delete wixpdb's + inputs: + SourceFolder: $(Build.SourcesDirectory)/artifacts/workloads + Contents: '*.wixpdb' + + # Upload artifacts to be used for generating VS components + - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml + parameters: + name: workloads-vs + publishPackagesCondition: false + publishVSSetupCondition: always() + isOfficialBuild: ${{ variables.isOfficialBuild }} timeoutInMinutes: 120 dependsOn: diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 338d53251f6ceb..6bb44bd64fc242 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -754,8 +754,7 @@ extends: # - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml - templatePath: 'templates' + jobTemplate: /eng/pipelines/common/global-build-job.yml buildConfig: release platforms: - android_x64 @@ -764,8 +763,26 @@ extends: - tvos_arm64 - ios_arm64 - maccatalyst_x64 + variables: + - name: _osParameter + value: -os linux + - name: _archParameter + value: -arch x64 jobParameters: - isOfficialBuild: false + nameSuffix: MonoAOTOffsets + buildArgs: -s mono.aotcross -c $(_BuildConfig) /p:MonoGenerateOffsetsOSGroups=$(osGroup) + postBuildSteps: + # Upload offset files + - task: CopyFiles@2 + displayName: Collect offset files + inputs: + sourceFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/' + contents: '**/offsets-*.h' + targetFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles/' + + - publish: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles' + artifact: Mono_Offsets_$(osGroup)$(osSubGroup) + displayName: Upload offset files # needed by crossaot condition: >- or( @@ -1246,9 +1263,9 @@ extends: nameSuffix: CrossAOT_Mono runtimeVariant: crossaot dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_wasi_offsets + - build_android_x64_release_MonoAOTOffsets + - build_browser_wasm_linux_release_MonoAOTOffsets + - build_wasi_wasm_linux_release_MonoAOTOffsets monoCrossAOTTargetOS: - android - browser @@ -1273,9 +1290,9 @@ extends: nameSuffix: CrossAOT_Mono runtimeVariant: crossaot dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_wasi_offsets + - build_android_x64_release_MonoAOTOffsets + - build_browser_wasm_linux_release_MonoAOTOffsets + - build_wasi_wasm_linux_release_MonoAOTOffsets monoCrossAOTTargetOS: - android - browser @@ -1304,12 +1321,12 @@ extends: nameSuffix: CrossAOT_Mono runtimeVariant: crossaot dependsOn: - - mono_android_offsets - - mono_browser_offsets - - mono_wasi_offsets - - mono_tvos_offsets - - mono_ios_offsets - - mono_maccatalyst_offsets + - build_android_x64_release_MonoAOTOffsets + - build_browser_wasm_linux_release_MonoAOTOffsets + - build_wasi_wasm_linux_release_MonoAOTOffsets + - build_tvos_arm64_release_MonoAOTOffsets + - build_ios_arm64_release_MonoAOTOffsets + - build_maccatalyst_x64_release_MonoAOTOffsets monoCrossAOTTargetOS: - android - browser diff --git a/src/workloads/workloads.csproj b/src/workloads/workloads.csproj index 29669de949b9de..54eb3b3664ff4b 100644 --- a/src/workloads/workloads.csproj +++ b/src/workloads/workloads.csproj @@ -9,9 +9,7 @@ $(ArtifactsObjDir)workloads/ $(WorkloadIntermediateOutputPath)VS/ $(ArtifactsBinDir)workloads/ - $(workloadArtifactsPath)/ $(ArtifactsShippingPackagesDir) - $(workloadPackagesPath)/ false @@ -141,7 +139,7 @@ -