From 48aa85fa8fdc274b0b8f6f81223857d8ab386656 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 4 Apr 2024 11:48:37 -0700 Subject: [PATCH] Rebase the installer build jobs on the global build job template (#100110) --- eng/pipelines/common/global-build-job.yml | 15 +- .../common/templates/global-build-step.yml | 5 +- eng/pipelines/installer/jobs/build-job.yml | 248 ------------------ .../jobs/steps/build-linux-package.yml | 31 --- .../jobs/steps/upload-job-artifacts.yml | 65 ----- .../installer/steps/build-linux-package.yml | 33 +++ .../installer/steps/upload-job-artifacts.yml | 26 ++ eng/pipelines/runtime-official.yml | 12 +- eng/pipelines/runtime.yml | 85 +++++- 9 files changed, 151 insertions(+), 369 deletions(-) delete mode 100644 eng/pipelines/installer/jobs/build-job.yml delete mode 100644 eng/pipelines/installer/jobs/steps/build-linux-package.yml delete mode 100644 eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml create mode 100644 eng/pipelines/installer/steps/build-linux-package.yml create mode 100644 eng/pipelines/installer/steps/upload-job-artifacts.yml diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml index aac4e64b80fb41..402e9271dfafe0 100644 --- a/eng/pipelines/common/global-build-job.yml +++ b/eng/pipelines/common/global-build-job.yml @@ -12,6 +12,13 @@ parameters: targetRid: '' timeoutInMinutes: '' dependsOn: [] + # The following parameter is used to specify dependencies on other global build for the same platform. + # We provide this mechanism to allow for global builds to depend on other global builds and use the multiplexing + # that platform-matrix.yml enables. + # Each item can have the following properties: + # - nameSuffix: The suffix of the job name to depend on. + # - buildConfig: The configuration of the job to depend on. + dependsOnGlobalBuilds: [] pool: '' platform: '' condition: true @@ -62,8 +69,12 @@ jobs: workspace: clean: all - ${{ if ne(parameters.dependsOn,'') }}: - dependsOn: ${{ parameters.dependsOn }} + ${{ if or(ne(parameters.dependsOn,''), ne(parameters.dependsOnGlobalBuilds,'')) }}: + dependsOn: + - ${{ each build in parameters.dependsOn }}: + - ${{ build }} + - ${{ each globalBuild in parameters.dependsOnGlobalBuilds }}: + - ${{ format('build_{0}{1}_{2}_{3}_{4}', parameters.osGroup, parameters.osSubgroup, parameters.archType, coalesce(globalBuild.buildConfig, parameters.buildConfig), globalBuild.nameSuffix) }} variables: - ${{ if eq(variables['System.TeamProject'], 'internal') }}: diff --git a/eng/pipelines/common/templates/global-build-step.yml b/eng/pipelines/common/templates/global-build-step.yml index 6597ac4feaefcd..b88207c516c19b 100644 --- a/eng/pipelines/common/templates/global-build-step.yml +++ b/eng/pipelines/common/templates/global-build-step.yml @@ -3,13 +3,16 @@ parameters: useContinueOnErrorDuringBuild: false shouldContinueOnError: false archParameter: $(_archParameter) + crossArg: $(crossArg) displayName: Build product container: '' + condition: succeeded() steps: - - script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -ci ${{ parameters.archParameter }} $(_osParameter) $(crossArg) ${{ parameters.buildArgs }} $(_officialBuildParameter) $(_buildDarwinFrameworksParameter) $(_overrideTestScriptWindowsCmdParameter) + - script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -ci ${{ parameters.archParameter }} $(_osParameter) ${{ parameters.crossArg }} ${{ parameters.buildArgs }} $(_officialBuildParameter) $(_buildDarwinFrameworksParameter) $(_overrideTestScriptWindowsCmdParameter) displayName: ${{ parameters.displayName }} ${{ if eq(parameters.useContinueOnErrorDuringBuild, true) }}: continueOnError: ${{ parameters.shouldContinueOnError }} ${{ if ne(parameters.container, '') }}: target: ${{ parameters.container }} + condition: ${{ parameters.condition }} diff --git a/eng/pipelines/installer/jobs/build-job.yml b/eng/pipelines/installer/jobs/build-job.yml deleted file mode 100644 index 9a444b2bde170d..00000000000000 --- a/eng/pipelines/installer/jobs/build-job.yml +++ /dev/null @@ -1,248 +0,0 @@ -parameters: - buildConfig: '' - osGroup: '' - archType: '' - osSubgroup: '' - platform: '' - crossBuild: false - timeoutInMinutes: 120 - condition: true - shouldContinueOnError: false - container: '' - buildSteps: [] - dependsOn: [] - globalBuildSuffix: '' - variables: [] - name: '' - displayName: '' - runtimeVariant: '' - pool: '' - - # The target names here should match container names in the resources section in our pipelines, like runtime.yml - packageDistroList: - - target: debpkg - packageType: deb - packagingArgs: /p:BuildDebPackage=true - - target: rpmpkg - packageType: rpm - packagingArgs: /p:BuildRpmPackage=true - - isOfficialBuild: false - buildFullPlatformManifest: false - - liveRuntimeBuildConfig: '' - liveLibrariesBuildConfig: '' - runtimeFlavor: 'coreclr' - unifiedArtifactsName: '' - unifiedBuildNameSuffix: '' - unifiedBuildConfigOverride: '' - -### Product build -jobs: -- template: /eng/common/templates/job/job.yml - parameters: - buildConfig: ${{ parameters.buildConfig }} - archType: ${{ parameters.archType }} - osGroup: ${{ parameters.osGroup }} - osSubgroup: ${{ parameters.osSubgroup }} - runtimeVariant: ${{ parameters.runtimeVariant }} - testGroup: ${{ parameters.testGroup }} - helixType: 'build/product/' - enableMicrobuild: true - pool: ${{ parameters.pool }} - - # Compute job name from template parameters - name: ${{ format('installer_{0}_{1}', coalesce(parameters.name, parameters.platform), parameters.buildConfig) }} - displayName: ${{ format('Installer Build and Test {0} {1}', coalesce(parameters.name, parameters.platform), parameters.buildConfig) }} - - # Run all steps in the container. - # Note that the containers are defined in platform-matrix.yml - container: ${{ parameters.container }} - - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - - crossBuild: ${{ parameters.crossBuild }} - - gatherAssetManifests: true - - # Component governance does not work on musl machines - ${{ if eq(parameters.osSubGroup, '_musl') }}: - disableComponentGovernance: true - - variables: - - ${{ each variable in parameters.variables }}: - - ${{ variable }} - - - name: BuildAction - value: -test - - - name: buildCommandSourcesDirectory - value: '$(Build.SourcesDirectory)/' - - - name: librariesBuildConfigArg - value: -lc ${{ coalesce(parameters.liveLibrariesBuildConfig, parameters.buildConfig) }} - - - name: runtimeBuildConfigArg - value: -rc ${{ coalesce(parameters.liveRuntimeBuildConfig, parameters.buildConfig) }} - - ### - ### Platform-specific variable setup - ### - - - ${{ if eq(parameters.osGroup, 'windows') }}: - - - name: CommonMSBuildArgs - value: >- - /p:TargetArchitecture=${{ parameters.archType }} - /p:PortableBuild=true - /p:RuntimeFlavor=${{ parameters.runtimeFlavor }} - - name: TargetArchitecture - value: ${{ parameters.archType }} - - - name: BaseJobBuildCommand - value: >- - build.cmd -subset host+packs -ci - $(BuildAction) - -configuration $(_BuildConfig) - $(librariesBuildConfigArg) - $(runtimeBuildConfigArg) - $(CommonMSBuildArgs) - - - ${{ elseif eq(parameters.osGroup, 'osx') }}: - - - name: CommonMSBuildArgs - value: >- - /p:PortableBuild=true - /p:RuntimeFlavor=${{ parameters.runtimeFlavor }} - /p:TargetArchitecture=${{ parameters.archType }} - /p:CrossBuild=${{ parameters.crossBuild }} - - - name: BaseJobBuildCommand - value: >- - $(Build.SourcesDirectory)/build.sh -subset host+packs -ci - $(BuildAction) - -configuration $(_BuildConfig) - -arch ${{ parameters.archType }} - $(librariesBuildConfigArg) - $(runtimeBuildConfigArg) - $(CommonMSBuildArgs) - - - ${{ elseif in(parameters.osGroup, 'linux', 'freebsd') }}: - - name: CommonMSBuildArgs - value: >- - /p:Configuration=$(_BuildConfig) - /p:TargetOS=${{ parameters.osGroup }} - /p:TargetArchitecture=${{ parameters.archType }} - /p:RuntimeFlavor=${{ parameters.runtimeFlavor }} - - - name: _PortableBuild - value: ${{ eq(parameters.osSubgroup, '') }} - - - ${{ if and(eq(parameters.osSubgroup, '_musl'), eq(parameters.osGroup, 'linux')) }}: - - name: _PortableBuild - value: true - - - ${{ if eq(parameters.crossBuild, true) }}: - - name: ArchArg - value: -arch ${{ parameters.archType }} - - - name: BaseJobBuildCommand - value: >- - $(Build.SourcesDirectory)/build.sh -subset host+packs -ci - $(BuildAction) - $(librariesBuildConfigArg) - $(runtimeBuildConfigArg) - $(ArchArg) - /p:CrossBuild=${{ parameters.crossBuild }} - /p:PortableBuild=$(_PortableBuild) - $(CommonMSBuildArgs) - - - name: installersSubsetArg - value: --subset packs.installers - - dependsOn: - - 'build_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ coalesce(parameters.unifiedBuildConfigOverride, parameters.buildConfig) }}_${{ parameters.unifiedBuildNameSuffix }}' - - ${{ parameters.dependsOn }} - steps: - - ${{ if eq(parameters.osGroup, 'windows') }}: - - template: /eng/pipelines/common/templates/disable-vsupdate-or-failfast.yml - - checkout: self - clean: true - fetchDepth: $(checkoutFetchDepth) - - - ${{ if ne(variables['System.TeamProject'], 'public') }}: - - ${{ if ne(parameters.osGroup, 'windows') }}: - - task: Bash@3 - displayName: Setup Private Feeds Credentials - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh - arguments: $(Build.SourcesDirectory)/NuGet.config $Token - env: - Token: $(dn-bot-dnceng-artifact-feeds-rw) - - ${{ else }}: - - task: PowerShell@2 - displayName: Setup Private Feeds Credentials - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 - arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token - env: - Token: $(dn-bot-dnceng-artifact-feeds-rw) - - - template: /eng/pipelines/common/download-artifact-step.yml - parameters: - unpackFolder: $(Build.SourcesDirectory)/artifacts/bin - artifactFileName: '${{ parameters.unifiedArtifactsName }}$(archiveExtension)' - artifactName: '${{ parameters.unifiedArtifactsName }}' - displayName: 'unified artifacts' - - - ${{ if in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator') }}: - - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} - displayName: Install Build Dependencies - - - script: | - du -sh $(Build.SourcesDirectory)/* - df -h - displayName: Disk Usage before Build - - - script: $(BaseJobBuildCommand) - displayName: Build - continueOnError: ${{ eq(parameters.shouldContinueOnError, true) }} - - - ${{ if and(eq(parameters.isOfficialBuild, true), eq(parameters.osGroup, 'windows')) }}: - - powershell: ./eng/collect_vsinfo.ps1 -ArchiveRunName postbuild_log - displayName: Collect vslogs on exit - condition: always() - - - ${{ if in(parameters.osGroup, 'osx', 'ios', 'tvos') }}: - - script: | - du -sh $(Build.SourcesDirectory)/* - df -h - displayName: Disk Usage after Build - - # Only in glibc leg, we produce RPMs and Debs - - ${{ if and(eq(parameters.runtimeFlavor, 'coreclr'), or(eq(parameters.platform, 'linux_x64'), eq(parameters.platform, 'linux_arm64')), eq(parameters.osSubgroup, ''))}}: - - ${{ each packageBuild in parameters.packageDistroList }}: - # This leg's RID matches the build image. Build its distro-dependent packages, as well as - # the distro-independent installers. (There's no particular reason to build the distro- - # independent installers on this leg, but we need to do it somewhere.) - # Currently, linux_arm64 supports 'rpm' type only. - - ${{ if or(not(eq(parameters.platform, 'linux_arm64')), eq(packageBuild.packageType, 'rpm')) }}: - - template: /eng/pipelines/installer/jobs/steps/build-linux-package.yml - parameters: - packageType: ${{ packageBuild.packageType }} - target: ${{ packageBuild.target }} - packageStepDescription: Runtime Deps, Runtime, Framework Packs installers - subsetArg: $(installersSubsetArg) - packagingArgs: ${{ packageBuild.packagingArgs }} - - - template: /eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml - parameters: - name: ${{ coalesce(parameters.name, parameters.platform) }} - runtimeFlavor: ${{ parameters.runtimeFlavor }} - runtimeVariant: ${{ parameters.runtimeVariant }} - - - ${{ if ne(parameters.osGroup, 'windows') }}: - - script: set -x && df -h - displayName: Check remaining storage space - condition: always() - continueOnError: true diff --git a/eng/pipelines/installer/jobs/steps/build-linux-package.yml b/eng/pipelines/installer/jobs/steps/build-linux-package.yml deleted file mode 100644 index 7f8320b55dfe39..00000000000000 --- a/eng/pipelines/installer/jobs/steps/build-linux-package.yml +++ /dev/null @@ -1,31 +0,0 @@ -parameters: - packageType: null - target: '' - packageStepDescription: null - packagingArgs: '' - subsetArg: '' - condition: succeeded() - -steps: -## Run NuGet Authentication for each of the side containers -- ${{ if ne(variables['System.TeamProject'], 'public') }}: - - task: NuGetAuthenticate@1 - target: ${{ parameters.target }} -- script: | - $(Build.SourcesDirectory)/build.sh \ - --ci \ - ${{ parameters.subsetArg }} \ - ${{ parameters.packagingArgs }} \ - $(CommonMSBuildArgs) \ - $(librariesBuildConfigArg) \ - $(runtimeBuildConfigArg) \ - /bl:artifacts/log/$(_BuildConfig)/msbuild.${{ parameters.packageType }}.installers.binlog - displayName: Package ${{ parameters.packageStepDescription }} - ${{ parameters.packageType }} - target: ${{ parameters.target }} - condition: ${{ parameters.condition }} -# Broken symbolic links break the SBOM processing -# We make some symlinks during the installer generation process, -# but they aren't always valid on disk afterwards. Some of our tooling, -# in particular the SBOM tooling, breaks on broken symlinks. -- script: find . -xtype l -delete - displayName: Remove broken symbolic links diff --git a/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml b/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml deleted file mode 100644 index 8cdf6e8fb77787..00000000000000 --- a/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml +++ /dev/null @@ -1,65 +0,0 @@ -parameters: - name: '' - -steps: -- task: PublishTestResults@2 - displayName: Publish Test Results - inputs: - testResultsFormat: 'VSTest' - testResultsFiles: '*.trx' - searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' - mergeTestResults: true - testRunTitle: Installer-${{ parameters.name }}-$(_BuildConfig) - continueOnError: true - condition: always() - -# Upload binaries and symbols on failure to allow debugging issues -- task: CopyFiles@2 - displayName: Prepare binaries to publish - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/bin' - Contents: | - */corehost/** - */corehost_test/** - TargetFolder: '$(Build.StagingDirectory)/Binaries' - continueOnError: true - condition: failed() - -- task: ArchiveFiles@2 - displayName: Zip binaries - inputs: - rootFolderOrFile: '$(Build.StagingDirectory)/Binaries' - archiveFile: '$(Build.StagingDirectory)/corehost-bin-${{ parameters.name }}-$(_BuildConfig)$(archiveExtension)' - archiveType: $(archiveType) - tarCompression: $(tarCompression) - includeRootFolder: false - continueOnError: true - condition: failed() - -- task: PublishBuildArtifacts@1 - displayName: Publish binaries - inputs: - pathtoPublish: '$(Build.StagingDirectory)/corehost-bin-${{ parameters.name }}-$(_BuildConfig)$(archiveExtension)' - artifactName: Installer-Binaries-${{ parameters.name }}-$(_BuildConfig) - continueOnError: true - condition: failed() - -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '$(Build.SourcesDirectory)' - Contents: | - **/*.log - **/*.binlog - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: always() - -- task: PublishPipelineArtifact@1 - displayName: Publish BuildLogs - inputs: - targetPath: '$(Build.StagingDirectory)/BuildLogs' - artifactName: Installer-Logs_Attempt$(System.JobAttempt)-${{ parameters.runtimeFlavor }}-${{ parameters.runtimeVariant }}-${{ parameters.name }}-$(_BuildConfig) - continueOnError: true - condition: always() diff --git a/eng/pipelines/installer/steps/build-linux-package.yml b/eng/pipelines/installer/steps/build-linux-package.yml new file mode 100644 index 00000000000000..ef905d6c164657 --- /dev/null +++ b/eng/pipelines/installer/steps/build-linux-package.yml @@ -0,0 +1,33 @@ +parameters: + osGroup: '' + osSubgroup: '' + packageType: null + target: '' + packageStepDescription: null + packagingArgs: '' + condition: succeeded() + +steps: +- ${{ if and(eq(parameters.osGroup, 'linux'), eq(parameters.osSubgroup, '')) }}: + ## Run NuGet Authentication for each of the side containers + - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(parameters.target, '')) }}: + - task: NuGetAuthenticate@1 + target: ${{ parameters.target }} + condition: ${{ parameters.condition }} + + - template: /eng/pipelines/common/templates/global-build-step.yml + parameters: + buildArgs: -s packs.installers ${{ parameters.packagingArgs }} /bl:artifacts/log/$(_BuildConfig)/msbuild.${{ parameters.packageType }}.installers.binlog + container: ${{ parameters.target }} + displayName: Package Runtime Deps, Runtime, Framework Packs - ${{ parameters.packageType }} packages + # Even for cross-build targets, our installer build steps are not cross-builds + crossArg: '' + condition: ${{ parameters.condition }} + + # Broken symbolic links break the SBOM processing + # We make some symlinks during the installer generation process, + # but they aren't always valid on disk afterwards. Some of our tooling, + # in particular the SBOM tooling, breaks on broken symlinks. + - script: find . -xtype l -delete + displayName: Remove broken symbolic links + condition: ${{ parameters.condition }} diff --git a/eng/pipelines/installer/steps/upload-job-artifacts.yml b/eng/pipelines/installer/steps/upload-job-artifacts.yml new file mode 100644 index 00000000000000..076f989780bbfe --- /dev/null +++ b/eng/pipelines/installer/steps/upload-job-artifacts.yml @@ -0,0 +1,26 @@ +parameters: + name: '' + +steps: +# Upload binaries and symbols on failure to allow debugging issues +- task: CopyFiles@2 + displayName: Prepare binaries to publish + inputs: + SourceFolder: '$(Build.SourcesDirectory)/artifacts/bin' + Contents: | + */corehost/** + */corehost_test/** + TargetFolder: '$(Build.StagingDirectory)/Binaries' + continueOnError: true + condition: failed() + +- template: /eng/pipelines/common/upload-artifact-step.yml + parameters: + rootFolder: '$(Build.StagingDirectory)/Binaries' + includeRootFolder: false + archiveType: $(archiveType) + archiveExtension: $(archiveExtension) + tarCompression: $(tarCompression) + artifactName: 'Installer-Binaries-${{ parameters.name }}-$(_BuildConfig)' + displayName: 'Binaries' + condition: failed() diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml index b8e74630b856ec..ba09a957605eb9 100644 --- a/eng/pipelines/runtime-official.yml +++ b/eng/pipelines/runtime-official.yml @@ -179,21 +179,17 @@ extends: PublishLocation: Container ArtifactName: CoreCLRCrossDacArtifacts # Create RPMs and DEBs - - template: /eng/pipelines/installer/jobs/steps/build-linux-package.yml + - template: /eng/pipelines/installer/steps/build-linux-package.yml parameters: packageType: deb target: debpkg - packageStepDescription: Runtime Deps, Runtime, Framework Packs Deb installers - subsetArg: -s packs.installers - packagingArgs: -c $(_BuildConfig) --arch $(archType) --os $(osGroup) --ci /p:OfficialBuildId=$(Build.BuildNumber) /p:BuildDebPackage=true + packagingArgs: -c $(_BuildConfig) /p:BuildDebPackage=true condition: and(succeeded(), eq(variables.osSubgroup, ''), eq(variables.archType, 'x64')) - - template: /eng/pipelines/installer/jobs/steps/build-linux-package.yml + - template: /eng/pipelines/installer/steps/build-linux-package.yml parameters: packageType: rpm target: rpmpkg - packageStepDescription: Runtime Deps, Runtime, Framework Packs RPM installers - subsetArg: -s packs.installers - packagingArgs: -c $(_BuildConfig) --arch $(archType) --os $(osGroup) --ci /p:OfficialBuildId=$(Build.BuildNumber) /p:BuildRpmPackage=true + packagingArgs: -c $(_BuildConfig) /p:BuildRpmPackage=true condition: and(succeeded(), eq(variables.osSubgroup, ''), in(variables.archType, 'x64', 'arm64')) # Upload the results. diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index b81da3971a1559..98dc5285250f45 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -95,12 +95,33 @@ extends: buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} platforms: - osx_arm64 + jobParameters: + nameSuffix: AllSubsets_CoreCLR + buildArgs: -s clr+libs+host+packs -rc Release -c Release -lc $(_BuildConfig) + timeoutInMinutes: 120 + condition: >- + or( + eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), + eq(variables['isRollingBuild'], true)) + + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + platforms: - linux_arm64 - linux_musl_x64 jobParameters: nameSuffix: AllSubsets_CoreCLR buildArgs: -s clr+libs+host+packs -rc Release -c Release -lc $(_BuildConfig) timeoutInMinutes: 120 + postBuildSteps: + - template: /eng/pipelines/installer/steps/build-linux-package.yml + parameters: + packageType: rpm + target: rpmpkg + packagingArgs: -c Release -lc $(_BuildConfig) /p:BuildRpmPackage=true + condition: and(succeeded(), eq(variables.osSubgroup, '')) condition: >- or( eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), @@ -1353,16 +1374,29 @@ extends: # - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/installer/jobs/build-job.yml + jobTemplate: /eng/pipelines/common/global-build-job.yml buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} platforms: - windows_x86 jobParameters: - liveRuntimeBuildConfig: release - liveLibrariesBuildConfig: Release - unifiedArtifactsName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release - unifiedBuildConfigOverride: release - unifiedBuildNameSuffix: CoreCLR_Libraries + nameSuffix: Installer_Build_And_Test + buildArgs: -s host+packs -c $(_BuildConfig) -lc Release -rc Release -test + dependsOnGlobalBuilds: + - nameSuffix: CoreCLR_Libraries + buildConfig: release + preBuildSteps: + - template: /eng/pipelines/common/download-artifact-step.yml + parameters: + artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release + artifactFileName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_Release$(archiveExtension) + unpackFolder: $(Build.SourcesDirectory)/artifacts/bin + displayName: 'unified artifacts' + enablePublishTestResults: true + testRunTitle: Installer-$(osGroup)$(osSubgroup)_$(archType) + postBuildSteps: + - template: /eng/pipelines/installer/steps/upload-job-artifacts.yml + parameters: + name: $(osGroup)$(osSubgroup)_$(archType) condition: or( eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true), @@ -1370,18 +1404,41 @@ extends: - template: /eng/pipelines/common/platform-matrix.yml parameters: - jobTemplate: /eng/pipelines/installer/jobs/build-job.yml - buildConfig: Release + jobTemplate: /eng/pipelines/common/global-build-job.yml + buildConfig: release platforms: + - windows_x64 - osx_x64 - linux_x64 - - windows_x64 jobParameters: - liveRuntimeBuildConfig: release - liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }} - unifiedArtifactsName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling) - unifiedBuildConfigOverride: ${{ variables.debugOnPrReleaseOnRolling }} - unifiedBuildNameSuffix: CoreCLR_Libraries + nameSuffix: Installer_Build_And_Test + buildArgs: -s host+packs -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }} -rc Release -test + dependsOnGlobalBuilds: + - nameSuffix: CoreCLR_Libraries + buildConfig: ${{ variables.debugOnPrReleaseOnRolling }} + preBuildSteps: + - template: /eng/pipelines/common/download-artifact-step.yml + parameters: + artifactName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling) + artifactFileName: CoreCLR_Libraries_BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(debugOnPrReleaseOnRolling)$(archiveExtension) + unpackFolder: $(Build.SourcesDirectory)/artifacts/bin + displayName: 'unified artifacts' + enablePublishTestResults: true + testRunTitle: Installer-$(osGroup)$(osSubgroup)_$(archType) + postBuildSteps: + - template: /eng/pipelines/installer/steps/upload-job-artifacts.yml + parameters: + name: $(osGroup)$(osSubgroup)_$(archType) + - template: /eng/pipelines/installer/steps/build-linux-package.yml + parameters: + packageType: deb + target: debpkg + packagingArgs: -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }} /p:BuildDebPackage=true + - template: /eng/pipelines/installer/steps/build-linux-package.yml + parameters: + packageType: rpm + target: rpmpkg + packagingArgs: -c $(_BuildConfig) -lc ${{ variables.debugOnPrReleaseOnRolling }} /p:BuildRpmPackage=true condition: or( eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_non_mono_and_wasm.containsChange'], true),