Make the dotnet/runtime official build an assetless build (#115311)

Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
This commit is contained in:
Jeremy Koritzinsky 2025-05-13 11:08:39 -07:00 committed by GitHub
parent 2b96e8a7d1
commit e5798b9f08
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 72 additions and 638 deletions

View File

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.Build.Traversal">
<ItemGroup Condition="'$(RestoreToolsetOnly)' != 'true'">
<ItemGroup>
<!-- Subsets are already imported by Directory.Build.props. -->
<ProjectReference Include="@(ProjectToBuild)" />
<!-- Only include tasks.proj during restore and build incrementally via a target. -->

View File

@ -5,45 +5,9 @@
<AutoGenerateSymbolPackages>false</AutoGenerateSymbolPackages>
</PropertyGroup>
<PropertyGroup Condition="'$(DotNetFinalPublish)' != 'true' and '$(DotNetBuild)' != 'true'">
<PushToLocalStorage>true</PushToLocalStorage>
<ArtifactsStagingDir>$(ArtifactsDir)staging/</ArtifactsStagingDir>
<SourceBuiltPdbArtifactsDir>$(ArtifactsStagingDir)SymStore</SourceBuiltPdbArtifactsDir>
<!-- Put blobs where we put packages so our regular globbing in our publish join job finds them. -->
<SourceBuiltAssetsDir>$(ArtifactsStagingDir)</SourceBuiltAssetsDir>
<SourceBuiltShippingPackagesDir>$(ArtifactsStagingDir)packages/$(Configuration)/Shipping</SourceBuiltShippingPackagesDir>
<SourceBuiltNonShippingPackagesDir>$(ArtifactsStagingDir)packages/$(Configuration)/NonShipping</SourceBuiltNonShippingPackagesDir>
<PublishingUseHardlinksIfPossible>true</PublishingUseHardlinksIfPossible>
<!-- We don't use the asset manifest from the vertical dotnet/runtime legs outside of the VMR. Just dump it in a temp dir. -->
<SourceBuiltAssetManifestsDir>$(ArtifactsTmpDir)/manifests/$(Configuration)</SourceBuiltAssetManifestsDir>
<AssetManifestName>VerticalManifest.xml</AssetManifestName>
</PropertyGroup>
<!-- In the runtime official build, we only sign a subset of files. Add all of our blob artifacts here again for publishing -->
<ItemGroup Condition="'$(DotNetFinalPublish)' == 'true'">
<Artifact Include="$(ArtifactsPackagesDir)**\*.tar.gz;
$(ArtifactsPackagesDir)**\*.zip;
$(ArtifactsPackagesDir)**\*.deb;
$(ArtifactsPackagesDir)**\*.rpm;
$(ArtifactsPackagesDir)**\*.pkg;
$(ArtifactsPackagesDir)**\*.exe;
$(ArtifactsPackagesDir)**\*.msi;"
Exclude="$(ArtifactsPackagesDir)**\Symbols.runtime.tar.gz"
Kind="Blob"
IsShipping="$([System.String]::Copy('%(RecursiveDir)').StartsWith('Shipping'))">
<!-- Exclude wixpack.zip files from checksum generation -->
<ChecksumPath Condition="$([System.String]::Copy('%(Filename)%(Extension)').EndsWith('.wixpack.zip')) != 'true'">%(FullPath).sha512</ChecksumPath>
</Artifact>
</ItemGroup>
<!-- remove the manifest packages, they are built in the SDK repo now -->
<ItemGroup Condition="'$(DotNetFinalPublish)' == 'true'">
<Artifact Remove="$(ArtifactsShippingPackagesDir)*.Manifest-*.nupkg" />
</ItemGroup>
<!-- The PGO runtime should always have External visibility, even if someone changes the default artifact visibility -->
<ItemGroup>
<Artifact Update="$(ArtifactsNonShippingPackagesDir)dotnet-runtime-pgo-*" Visibility="External" />
<!-- The PGO runtime should always have External visibility, even if someone changes the default artifact visibility -->
<ItemGroup>
<Artifact Update="$(ArtifactsNonShippingPackagesDir)dotnet-runtime-pgo-*" Visibility="External" />
</ItemGroup>
<!--
@ -91,9 +55,6 @@
<ShouldGenerateProductVersionFiles Condition="'$(OutputRID)' == 'win-x64' and ('$(DotNetBuildPass)' == '' or '$(DotNetBuildPass)' == '1')">true</ShouldGenerateProductVersionFiles>
<ShouldGenerateProductVersionFiles Condition="'$(DotNetBuildSourceOnly)' == 'true'">true</ShouldGenerateProductVersionFiles>
</PropertyGroup>
<PropertyGroup Condition="'$(DotNetBuildOrchestrator)' != 'true'">
<ShouldGenerateProductVersionFiles Condition="'$(DotNetFinalPublish)' == 'true'">true</ShouldGenerateProductVersionFiles>
</PropertyGroup>
<Target Name="GenerateProductVersionFiles"
DependsOnTargets="GetNonStableProductVersion"
@ -128,12 +89,12 @@
DependsOnTargets="GetNonStableProductVersion"
BeforeTargets="PublishToAzureDevOpsArtifacts"
AfterTargets="GenerateChecksumsFromArtifacts">
<ItemGroup Condition="'$(DotNetFinalPublish)' == 'true' or '$(DotNetBuildOrchestrator)' == 'true'">
<ItemGroup Condition="'$(DotNetBuildOrchestrator)' == 'true'">
<Artifact Condition="'%(Artifact.Kind)' != 'Package' and '%(Artifact.RelativeBlobPath)' == ''"
RelativeBlobPath="Runtime/$(NonStableProductVersion)/%(Artifact.SubBlobFolder)%(Filename)%(Extension)" />
</ItemGroup>
<!-- In vertical dotnet/runtime legs outside of the VMR, set the "relative blob path" to shipping vs non-shipping to make our download/upload work. -->
<ItemGroup Condition="'$(DotNetFinalPublish)' != 'true' and '$(DotNetBuildOrchestrator)' != 'true'">
<ItemGroup Condition="'$(DotNetBuildOrchestrator)' != 'true'">
<Artifact Condition="'%(Artifact.Kind)' == 'Blob' and '%(Artifact.IsShipping)' == 'true'"
RelativeBlobPath="packages/$(Configuration)/Shipping/%(Filename)%(Extension)" />
<Artifact Condition="'%(Artifact.Kind)' == 'Blob' and '%(Artifact.IsShipping)' != 'true'"

View File

@ -26,7 +26,6 @@
<TargetRid>$(OutputRID)</TargetRid>
<!-- The final stage of the runtime official build should publish everything. -->
<EnableDefaultRidSpecificArtifacts Condition="'$(DotNetFinalPublish)' != ''">false</EnableDefaultRidSpecificArtifacts>
<EnableDefaultRidSpecificArtifacts Condition="'$(EnableDefaultRidSpecificArtifacts)' == '' and '$(DotNetBuildOrchestrator)' != 'true'">true</EnableDefaultRidSpecificArtifacts>
<UseDotNetCertificate>true</UseDotNetCertificate>
@ -62,7 +61,7 @@
<FileSignInfo Include="Mono.Cecil.Rocks.dll" CertificateName="3PartySHA2" />
</ItemGroup>
<ItemGroup Condition="'$(DotNetFinalPublish)' != 'true'">
<ItemGroup>
<BlobArtifact Include="$(ArtifactsPackagesDir)**\*.tar.gz;
$(ArtifactsPackagesDir)**\*.zip;
$(ArtifactsPackagesDir)**\*.deb;
@ -78,14 +77,6 @@
</BlobArtifact>
</ItemGroup>
<!-- In the runtime official build, we only sign a subset of files. -->
<ItemGroup Condition="'$(DotNetFinalPublish)' == 'true'">
<BlobArtifact Include="$(ArtifactsPackagesDir)**\*.msi;
$(ArtifactsPackagesDir)**\*.exe;
$(ArtifactsPackagesDir)**\*.zip"
SkipPublish="true" />
</ItemGroup>
<ItemGroup Condition="'$(EnableBlobArtifacts)' == 'true'">
<Artifact Include="@(BlobArtifact)" />

View File

@ -54,24 +54,7 @@ jobs:
testResultsFormat: ${{ parameters.testResultsFormat }}
enableMicrobuild: ${{ parameters.isOfficialBuild }}
enableMicrobuildForMacAndLinux: ${{ parameters.isOfficialBuild }}
templateContext:
${{ if ne(parameters.templateContext, '') }}:
${{ each pair in parameters.templateContext }}:
${{ if notIn(pair.key, 'outputs') }}:
${{ pair.key }}: ${{ pair.value }}
outputs:
- ${{ if ne(parameters.templateContext.outputs, '') }}:
- ${{ each output in parameters.templateContext.outputs }}:
${{ output.key }}: ${{ output.value }}
- ${{ if eq(parameters.isOfficialBuild, true) }}:
- output: pipelineArtifact
displayName: 'Publish Pipeline Artifacts'
${{ if eq(parameters.hostedOs, '') }}:
artifactName: ${{ format('build_{0}{1}_{2}_{3}_{4}_Artifacts', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.nameSuffix) }}
${{ if ne(parameters.hostedOs, '') }}:
artifactName: ${{ format('build_{0}{1}_{2}_{3}_{4}_{5}_Artifacts', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.hostedOs, parameters.buildConfig, parameters.nameSuffix) }}
targetPath: $(Build.SourcesDirectory)/artifacts/staging
templateContext: ${{ parameters.templateContext }}
artifacts:
publish:

View File

@ -22,9 +22,9 @@ extends:
parameters:
sdl:
codeql:
compiled:
compiled:
enabled: false
justificationForDisabling: 'CodeQL is run on the runtime-codeql pipeline'
justificationForDisabling: 'CodeQL is run manually on the runtime-codeql pipeline'
credscan:
suppressionsFile: $(Build.SourcesDirectory)/.config/CredScanSuppressions.json
policheck:

View File

@ -1,30 +0,0 @@
parameters:
- name: buildStage
type: stage
- name: otherStages
type: stageList
extends:
template: /eng/pipelines/common/templates/pipeline-with-resources.yml
parameters:
isOfficialBuild: true
stages:
- ${{ each stage in parameters.otherStages }}:
- ${{ insert }}: ${{ stage }}
- ${{ insert }}: ${{ parameters.buildStage }}
- stage: Publish
jobs:
- template: /eng/pipelines/official/prepare-signed-artifacts.yml
parameters:
buildStage: ${{ parameters.buildStage }}
logArtifactName: 'Logs-PrepareSignedArtifacts_Attempt$(System.JobAttempt)'
- template: /eng/common/templates-official/job/publish-build-assets.yml
parameters:
publishUsingPipelines: true
publishAssetsImmediately: true
pool:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals 1es-windows-2022
symbolPublishingAdditionalParameters: '/p:PublishSpecialClrFiles=true'
dependsOn: PrepareSignedArtifacts

View File

@ -1,73 +0,0 @@
parameters:
- name: logArtifactName
type: string
default: 'Logs-PrepareSignedArtifacts_Attempt$(System.JobAttempt)'
- name: buildStage
type: stage
jobs:
- template: /eng/common/templates-official/job/job.yml
parameters:
name: 'PrepareSignedArtifacts'
displayName: 'Prepare Signed Artifacts'
pool:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals 1es-windows-2022
# Double the default timeout.
timeoutInMinutes: 240
workspace:
clean: all
enableMicrobuild: true
variables:
- name: '_SignType'
value: $[ coalesce(variables.OfficialSignType, 'real') ]
templateContext:
inputs:
- input: checkout
repository: self
clean: true
fetchDepth: 20
- ${{ each job in parameters.buildStage.jobs }}:
# Source Build publishes itself, so we don't need to publish it
- ${{ if notIn(job.job, 'Source_Build_Linux_x64')}}:
- input: pipelineArtifact
artifactName: ${{ job.job }}_Artifacts
targetPath: $(Build.SourcesDirectory)\artifacts
itemPattern: |
**/*
!_manifest/**/*
outputs:
- output: pipelineArtifact
displayName: 'Publish BuildLogs'
condition: succeededOrFailed()
targetPath: '$(Build.StagingDirectory)\BuildLogs'
artifactName: ${{ parameters.logArtifactName }}
steps:
- script: >-
build.cmd -restore -sign -publish -ci -configuration Release
/p:RestoreToolsetOnly=true
/p:OfficialBuildId=$(Build.BuildNumber)
/p:SignType=$(_SignType)
/p:DotNetSignType=$(_SignType)
/p:DotNetPublishUsingPipelines=true
/p:DotNetFinalPublish=true
/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()

View File

@ -28,24 +28,30 @@ variables:
extends:
template: /eng/pipelines/common/templates/pipeline-with-resources.yml
parameters:
isOfficialBuild: true
stages:
- stage: Build
jobs:
#
# Build CoreCLR runtime packs
# Build all runtime packs to ensure that the SDL tooling can analyze the code in this repo (including all dependencies on all platforms).
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
platforms:
- linux_x64
- windows_x64
- linux_x64
- linux_musl_arm64
- android_x64
- linux_bionic_x64
- browser_wasm
- wasi_wasm
jobParameters:
buildArgs: -s clr+libs+host+packs -c $(_BuildConfig)
nameSuffix: AllSubsets_CoreCLR
isOfficialBuild: ${{ variables.isOfficialBuild }}
templatePath: 'templates-official'
buildArgs: -c $(_BuildConfig) -restore -build -pack /p:DotNetBuildAllRuntimePacks=true
nameSuffix: CodeQL
isOfficialBuild: false
timeoutInMinutes: 360
preBuildSteps:
- task: CodeQL3000Init@0
@ -53,26 +59,49 @@ extends:
postBuildSteps:
- task: CodeQL3000Finalize@0
displayName: Finalize CodeQL (manually-injected)
- task: CopyFiles@2
displayName: Gather packages for publish to artifacts
inputs:
SourceFolder: 'artifacts/packages'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
templateContext:
outputs:
- output: pipelineArtifact
displayName: Publish artifacts
targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
artifactName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
condition: always()
retryCountOnTaskFailure: 10 # for any logs being locked
continueOnError: true
#
# Build Mono runtime packs
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
runtimeFlavor: mono
platforms:
- linux_x64
- windows_x64
- maccatalyst_x64
- osx_arm64
- tvos_arm64
- ios_arm64
jobParameters:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: AllSubsets_Mono
isOfficialBuild: ${{ variables.isOfficialBuild }}
timeoutInMinutes: 360
preBuildSteps:
- task: CodeQL3000Init@0
displayName: Initialize CodeQL (manually-injected)
templatePath: 'templates-official'
buildArgs: -c $(_BuildConfig) -restore -build -pack /p:DotNetBuildAllRuntimePacks=true
isOfficialBuild: false
timeoutInMinutes: 120
postBuildSteps:
- task: CodeQL3000Finalize@0
displayName: Finalize CodeQL (manually-injected)
- task: CopyFiles@2
displayName: Gather packages for publish to artifacts
inputs:
SourceFolder: 'artifacts/packages'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
templateContext:
outputs:
- output: pipelineArtifact
displayName: Publish artifacts
targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
artifactName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
condition: always()
retryCountOnTaskFailure: 10 # for any logs being locked
continueOnError: true

View File

@ -30,9 +30,10 @@ variables:
teamName: dotnet-core-acquisition
extends:
template: /eng/pipelines/official/pipeline.yml
template: /eng/pipelines/common/templates/pipeline-with-resources.yml
parameters:
otherStages:
isOfficialBuild: true
stages:
- ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}:
- stage: Localization
dependsOn: []
@ -56,443 +57,15 @@ extends:
- template: /eng/common/templates-official/job/source-index-stage1.yml
parameters:
sourceIndexBuildCommand: build.cmd -subset libs.sfx+libs.oob -binarylog -os linux -ci /p:SkipLibrariesNativeRuntimePackages=true
buildStage:
stage: Build
- stage: Publish
dependsOn: []
jobs:
#
# Build CoreCLR runtime packs
# Windows x64/arm64
# Sign diagnostic files after native build
#
- template: /eng/pipelines/common/platform-matrix.yml
- template: /eng/common/templates-official/job/publish-build-assets.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
platforms:
- windows_x64
- windows_x86
- windows_arm64
variables:
- name: _SignDiagnosticFilesArgs
value: ''
- name: _EnableDefaultArtifactsArg
value: $[iif(and(eq(variables.osGroup, 'windows'), eq(variables.archType, 'x64')),'/p:EnableDefaultRidSpecificArtifacts=false','')]
jobParameters:
templatePath: 'templates-official'
preBuildSteps:
- template: /eng/pipelines/coreclr/templates/install-diagnostic-certs.yml
parameters:
isOfficialBuild: true
certNames:
- 'dac-dnceng-ssl-cert'
vaultName: 'clrdiag-esrp-pme'
azureSubscription: 'diagnostics-esrp-kvcertuser-pme'
buildArgs: -c $(_BuildConfig) -restore -build -publish /p:DotNetBuildAllRuntimePacks=true $(_SignDiagnosticFilesArgs) $(_EnableDefaultArtifactsArg)
nameSuffix: AllRuntimes
isOfficialBuild: true
timeoutInMinutes: 120
postBuildSteps:
- template: /eng/pipelines/coreclr/templates/remove-diagnostic-certs.yml
parameters:
isOfficialBuild: true
#
# Build all runtime packs
# Mac x64/arm64
# Sign and entitle createdump and corerun after native build.
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
platforms:
- osx_arm64
- osx_x64
jobParameters:
templatePath: 'templates-official'
buildArgs: -s clr.corelib+clr.nativecorelib+clr.nativeaotlibs+clr.tools+clr.packages+mono+libs+host.tools+host.pkg+packs -restore -build -publish -c $(_BuildConfig) /p:DotNetBuildAllRuntimePacks=true
nameSuffix: AllRuntimes
isOfficialBuild: ${{ variables.isOfficialBuild }}
timeoutInMinutes: 120
preBuildSteps:
# Build our native assets first so we can sign them.
- template: /eng/pipelines/common/templates/global-build-step.yml
parameters:
buildArgs: -s clr.runtime+clr.alljits+clr.nativeaotruntime+host.native -c $(_BuildConfig) /bl:$(Build.SourcesDirectory)/artifacts/logs/$(_BuildConfig)/CoreClrNativeBuild.binlog
displayName: Build native CoreCLR and host components
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/pipelines/common/macos-sign-with-entitlements.yml
parameters:
filesToSign:
- name: createdump
path: $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(_BuildConfig)
- name: corerun
path: $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(_BuildConfig)
- name: dotnet
path: $(Build.SourcesDirectory)/artifacts/bin/$(osGroup)-$(archType).$(_BuildConfig)/corehost
- name: apphost
path: $(Build.SourcesDirectory)/artifacts/bin/$(osGroup)-$(archType).$(_BuildConfig)/corehost
- task: CopyFiles@2
displayName: 'Copy signed createdump to sharedFramework'
inputs:
contents: createdump
sourceFolder: $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(_BuildConfig)
targetFolder: $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(_BuildConfig)/sharedFramework
overWrite: true
#
# Build all runtime packs for Linux, Linux musl, and mobile
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
platforms:
- linux_x64
- linux_arm
- linux_arm64
- linux_musl_x64
- linux_musl_arm
- linux_musl_arm64
- android_x64
- android_x86
- android_arm
- android_arm64
- maccatalyst_x64
- maccatalyst_arm64
- tvossimulator_x64
- tvossimulator_arm64
- tvos_arm64
- iossimulator_x64
- iossimulator_arm64
- ios_arm64
- linux_bionic_x64
- linux_bionic_arm
- linux_bionic_arm64
- browser_wasm
- wasi_wasm
jobParameters:
templatePath: 'templates-official'
buildArgs: -c $(_BuildConfig) -restore -build -publish /p:DotNetBuildAllRuntimePacks=true
nameSuffix: AllRuntimes
isOfficialBuild: true
timeoutInMinutes: 120
#
# Build and Pack CrossDac
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
platforms:
- windows_x64
jobParameters:
templatePath: 'templates-official'
buildArgs: -s crossdacpack -restore -build -publish -c $(_BuildConfig) /p:EnableDefaultRidSpecificArtifacts=false /p:CrossRuntimeExtractionRoot=$(CrossRuntimeExtractionRoot) $(_SignDiagnosticFilesArgs)
nameSuffix: CrossDac
isOfficialBuild: true
timeoutInMinutes: 120
templateContext:
inputs:
- input: pipelineArtifact
artifactName: Build_linux_x64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/RuntimeDownload
itemPattern: |
packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-x64.*.nupkg
!packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-x64.*.symbols.nupkg
- input: pipelineArtifact
artifactName: Build_linux_arm64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/RuntimeDownload
itemPattern: |
packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-arm64.*.nupkg
!packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-arm64.*.symbols.nupkg
- input: pipelineArtifact
artifactName: Build_linux_musl_x64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/RuntimeDownload
itemPattern: |
packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-musl-x64.*.nupkg
!packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-musl-x64.*.symbols.nupkg
- input: pipelineArtifact
artifactName: Build_linux_musl_arm64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/RuntimeDownload
itemPattern: |
packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-musl-arm64.*.nupkg
!packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-musl-arm64.*.symbols.nupkg
- input: pipelineArtifact
artifactName: Build_linux_arm_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/RuntimeDownload
itemPattern: |
packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-arm.*.nupkg
!packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-arm.*.symbols.nupkg
- input: pipelineArtifact
artifactName: Build_linux_musl_arm_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/RuntimeDownload
itemPattern: |
packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-musl-arm.*.nupkg
!packages/Release/Shipping/Microsoft.NETCore.App.Runtime.linux-musl-arm.*.symbols.nupkg
preBuildSteps:
- powershell: $(Build.SourcesDirectory)/eng/extract-for-crossdac.ps1 -DownloadDirectory $(Build.ArtifactStagingDirectory)/artifacts/RuntimeDownload -ExtractDirectory $(CrossRuntimeExtractionRoot)
displayName: Extract runtime packs
- template: /eng/pipelines/coreclr/templates/install-diagnostic-certs.yml
parameters:
isOfficialBuild: true
certNames:
- 'dac-dnceng-ssl-cert'
vaultName: 'clrdiag-esrp-pme'
azureSubscription: 'diagnostics-esrp-kvcertuser-pme'
postBuildSteps:
- template: /eng/pipelines/coreclr/templates/remove-diagnostic-certs.yml
parameters:
isOfficialBuild: true
dependsOn:
- build_linux_x64_release_AllRuntimes
- build_linux_arm_release_AllRuntimes
- build_linux_arm64_release_AllRuntimes
- build_linux_musl_x64_release_AllRuntimes
- build_linux_musl_arm_release_AllRuntimes
- build_linux_musl_arm64_release_AllRuntimes
variables:
- name: CrossRuntimeExtractionRoot
value: $(Build.SourcesDirectory)/artifacts/CrossDac
- name: _SignDiagnosticFilesArgs
value: ''
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
runtimeFlavor: mono
platforms:
- browser_wasm
jobParameters:
templatePath: 'templates-official'
buildArgs: -c $(_BuildConfig) -restore -build -publish /p:DotNetBuildAllRuntimePacks=true /p:WasmEnableThreads=true
nameSuffix: Mono_multithread
isOfficialBuild: true
runtimeVariant: multithread
#
# Build Mono LLVM runtime packs
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
platforms:
- osx_x64
- linux_x64
- linux_arm64
buildConfig: release
runtimeFlavor: mono
jobParameters:
templatePath: 'templates-official'
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) -restore -build -publish
/p:MonoEnableLLVM=true /p:MonoAOTEnableLLVM=true /p:MonoBundleLLVMOptimizer=true
nameSuffix: Mono_LLVMAOT
runtimeVariant: LLVMAOT
isOfficialBuild: true
#
# Build libraries (all TFMs) and packages
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: Release
platforms:
- windows_x64
jobParameters:
templatePath: 'templates-official'
buildArgs: -s tools.illink+libs -restore -build -pack -publish -c $(_BuildConfig) /p:TestAssemblies=false /p:TestPackages=true /p:EnableDefaultRidSpecificArtifacts=false
nameSuffix: Libraries_WithPackages
isOfficialBuild: true
timeoutInMinutes: 95
#
# Build SourceBuild packages
#
- template: /eng/common/templates-official/jobs/source-build.yml
parameters:
platforms:
- name: Linux_x64
targetRID: linux-x64
container: SourceBuild_linux_x64
#
# Build PGO Instrumented CoreCLR Release
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: Release
helixQueueGroup: ci
platforms:
- windows_x64
- windows_x86
- linux_x64
- windows_arm64
- linux_arm64
jobParameters:
templatePath: 'templates-official'
buildArgs: -s clr.native+clr.corelib+clr.tools+clr.nativecorelib+libs+host+packs -c $(_BuildConfig) -restore -build -publish -pgoinstrument /p:SkipLibrariesNativeRuntimePackages=true
isOfficialBuild: true
nameSuffix: PGO
timeoutInMinutes: 95
#
# Build Workloads
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
platforms:
- windows_x64
jobParameters:
templatePath: 'templates-official'
nameSuffix: Workloads
templateContext:
inputs:
- input: pipelineArtifact
artifactName: Build_windows_x64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-*.nupkg
**/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm*.nupkg
**/Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.wasi-wasm*.nupkg
**/Microsoft.NETCore.App.Runtime.win-x64*.nupkg
- input: pipelineArtifact
artifactName: Build_windows_arm64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.android-*.nupkg
**/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.browser-wasm*.nupkg
**/Microsoft.NETCore.App.Runtime.AOT.win-arm64.Cross.wasi-wasm*.nupkg
**/Microsoft.NETCore.App.Runtime.win-arm64*.nupkg
- input: pipelineArtifact
artifactName: Build_windows_x86_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.win-x86*.nupkg
- input: pipelineArtifact
artifactName: Build_android_x64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.android-*.nupkg
- input: pipelineArtifact
artifactName: Build_android_x86_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.android-*.nupkg
- input: pipelineArtifact
artifactName: Build_android_arm_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.android-*.nupkg
- input: pipelineArtifact
artifactName: Build_android_arm64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.android-*.nupkg
- input: pipelineArtifact
artifactName: Build_browser_wasm_Linux_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.browser-wasm*.nupkg
**/Microsoft.NET.Workload.Mono.ToolChain.Current.Manifest*.nupkg
**/Microsoft.NET.Workload.Mono.ToolChain.net6.Manifest*.nupkg
**/Microsoft.NET.Workload.Mono.ToolChain.net7.Manifest*.nupkg
**/Microsoft.NET.Workload.Mono.ToolChain.net8.Manifest*.nupkg
**/Microsoft.NET.Workload.Mono.ToolChain.net9.Manifest*.nupkg
**/Microsoft.NET.Runtime.WebAssembly.Sdk*.nupkg
**/Microsoft.NET.Runtime.WebAssembly.Templates*.nupkg
**/Microsoft.NET.Sdk.WebAssembly.Pack*.nupkg
- input: pipelineArtifact
artifactName: build_browser_wasm_linux_release_Mono_multithread_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm*.nupkg
- input: pipelineArtifact
artifactName: Build_wasi_wasm_Linux_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NET.Runtime.WebAssembly.Wasi*.nupkg
**/Microsoft.NETCore.App.Runtime.Mono.wasi-wasm*.nupkg
- input: pipelineArtifact
artifactName: Build_ios_arm64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NET.Runtime.MonoTargets.Sdk*.nupkg
**/Microsoft.NET.Runtime.MonoAOTCompiler.Task*.nupkg
**/Microsoft.NETCore.App.Runtime.Mono.ios-*.nupkg
- input: pipelineArtifact
artifactName: Build_iossimulator_x64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.iossimulator-*.nupkg
- input: pipelineArtifact
artifactName: Build_iossimulator_arm64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.iossimulator-*.nupkg
- input: pipelineArtifact
artifactName: Build_maccatalyst_x64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-*.nupkg
- input: pipelineArtifact
artifactName: Build_maccatalyst_arm64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-*.nupkg
- input: pipelineArtifact
artifactName: Build_tvos_arm64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.tvos-*.nupkg
- input: pipelineArtifact
artifactName: Build_tvossimulator_x64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.tvossimulator-*.nupkg
- input: pipelineArtifact
artifactName: Build_tvossimulator_arm64_release_AllRuntimes_Artifacts
targetPath: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
itemPattern: |
**/Microsoft.NETCore.App.Runtime.Mono.tvossimulator-*.nupkg
preBuildSteps:
- task: CopyFiles@2
displayName: Flatten packages
inputs:
sourceFolder: $(Build.ArtifactStagingDirectory)/artifacts/workloadPackages
contents: 'packages/Release/Shipping/*.nupkg'
cleanTargetFolder: true
targetFolder: $(Build.SourcesDirectory)/artifacts/workloadPackages
flattenFolders: true
buildArgs: -s mono.workloads -c $(_BuildConfig) -restore -build -publish /p:PackageSource=$(Build.SourcesDirectory)/artifacts/workloadPackages /p:WorkloadOutputPath=$(Build.SourcesDirectory)/artifacts/workloads /p:EnableDefaultRidSpecificArtifacts=false
isOfficialBuild: true
timeoutInMinutes: 120
dependsOn:
- Build_android_arm_release_AllRuntimes
- Build_android_arm64_release_AllRuntimes
- Build_android_x86_release_AllRuntimes
- Build_android_x64_release_AllRuntimes
- Build_browser_wasm_Linux_release_AllRuntimes
- Build_wasi_wasm_linux_release_AllRuntimes
- Build_ios_arm64_release_AllRuntimes
- Build_iossimulator_x64_release_AllRuntimes
- Build_iossimulator_arm64_release_AllRuntimes
- Build_maccatalyst_arm64_release_AllRuntimes
- Build_maccatalyst_x64_release_AllRuntimes
- Build_tvos_arm64_release_AllRuntimes
- Build_tvossimulator_arm64_release_AllRuntimes
- Build_tvossimulator_x64_release_AllRuntimes
- Build_windows_x64_release_AllRuntimes
- Build_windows_x86_release_AllRuntimes
- Build_windows_arm64_release_AllRuntimes
- build_browser_wasm_linux_release_Mono_multithread
publishUsingPipelines: true
publishAssetsImmediately: true
isAssetlessBuild: true
pool:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals 1es-windows-2022