Skip to content

Commit e5798b9

Browse files
Make the dotnet/runtime official build an assetless build (#115311)
Co-authored-by: Viktor Hofer <[email protected]>
1 parent 2b96e8a commit e5798b9

File tree

9 files changed

+72
-638
lines changed

9 files changed

+72
-638
lines changed

Build.proj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="Microsoft.Build.Traversal">
22

3-
<ItemGroup Condition="'$(RestoreToolsetOnly)' != 'true'">
3+
<ItemGroup>
44
<!-- Subsets are already imported by Directory.Build.props. -->
55
<ProjectReference Include="@(ProjectToBuild)" />
66
<!-- Only include tasks.proj during restore and build incrementally via a target. -->

eng/Publishing.props

Lines changed: 5 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,9 @@
55
<AutoGenerateSymbolPackages>false</AutoGenerateSymbolPackages>
66
</PropertyGroup>
77

8-
<PropertyGroup Condition="'$(DotNetFinalPublish)' != 'true' and '$(DotNetBuild)' != 'true'">
9-
<PushToLocalStorage>true</PushToLocalStorage>
10-
<ArtifactsStagingDir>$(ArtifactsDir)staging/</ArtifactsStagingDir>
11-
<SourceBuiltPdbArtifactsDir>$(ArtifactsStagingDir)SymStore</SourceBuiltPdbArtifactsDir>
12-
<!-- Put blobs where we put packages so our regular globbing in our publish join job finds them. -->
13-
<SourceBuiltAssetsDir>$(ArtifactsStagingDir)</SourceBuiltAssetsDir>
14-
<SourceBuiltShippingPackagesDir>$(ArtifactsStagingDir)packages/$(Configuration)/Shipping</SourceBuiltShippingPackagesDir>
15-
<SourceBuiltNonShippingPackagesDir>$(ArtifactsStagingDir)packages/$(Configuration)/NonShipping</SourceBuiltNonShippingPackagesDir>
16-
<PublishingUseHardlinksIfPossible>true</PublishingUseHardlinksIfPossible>
17-
<!-- We don't use the asset manifest from the vertical dotnet/runtime legs outside of the VMR. Just dump it in a temp dir. -->
18-
<SourceBuiltAssetManifestsDir>$(ArtifactsTmpDir)/manifests/$(Configuration)</SourceBuiltAssetManifestsDir>
19-
<AssetManifestName>VerticalManifest.xml</AssetManifestName>
20-
</PropertyGroup>
21-
22-
<!-- In the runtime official build, we only sign a subset of files. Add all of our blob artifacts here again for publishing -->
23-
<ItemGroup Condition="'$(DotNetFinalPublish)' == 'true'">
24-
<Artifact Include="$(ArtifactsPackagesDir)**\*.tar.gz;
25-
$(ArtifactsPackagesDir)**\*.zip;
26-
$(ArtifactsPackagesDir)**\*.deb;
27-
$(ArtifactsPackagesDir)**\*.rpm;
28-
$(ArtifactsPackagesDir)**\*.pkg;
29-
$(ArtifactsPackagesDir)**\*.exe;
30-
$(ArtifactsPackagesDir)**\*.msi;"
31-
Exclude="$(ArtifactsPackagesDir)**\Symbols.runtime.tar.gz"
32-
Kind="Blob"
33-
IsShipping="$([System.String]::Copy('%(RecursiveDir)').StartsWith('Shipping'))">
34-
<!-- Exclude wixpack.zip files from checksum generation -->
35-
<ChecksumPath Condition="$([System.String]::Copy('%(Filename)%(Extension)').EndsWith('.wixpack.zip')) != 'true'">%(FullPath).sha512</ChecksumPath>
36-
</Artifact>
37-
</ItemGroup>
38-
39-
<!-- remove the manifest packages, they are built in the SDK repo now -->
40-
<ItemGroup Condition="'$(DotNetFinalPublish)' == 'true'">
41-
<Artifact Remove="$(ArtifactsShippingPackagesDir)*.Manifest-*.nupkg" />
42-
</ItemGroup>
43-
44-
<!-- The PGO runtime should always have External visibility, even if someone changes the default artifact visibility -->
45-
<ItemGroup>
46-
<Artifact Update="$(ArtifactsNonShippingPackagesDir)dotnet-runtime-pgo-*" Visibility="External" />
8+
<!-- The PGO runtime should always have External visibility, even if someone changes the default artifact visibility -->
9+
<ItemGroup>
10+
<Artifact Update="$(ArtifactsNonShippingPackagesDir)dotnet-runtime-pgo-*" Visibility="External" />
4711
</ItemGroup>
4812

4913
<!--
@@ -91,9 +55,6 @@
9155
<ShouldGenerateProductVersionFiles Condition="'$(OutputRID)' == 'win-x64' and ('$(DotNetBuildPass)' == '' or '$(DotNetBuildPass)' == '1')">true</ShouldGenerateProductVersionFiles>
9256
<ShouldGenerateProductVersionFiles Condition="'$(DotNetBuildSourceOnly)' == 'true'">true</ShouldGenerateProductVersionFiles>
9357
</PropertyGroup>
94-
<PropertyGroup Condition="'$(DotNetBuildOrchestrator)' != 'true'">
95-
<ShouldGenerateProductVersionFiles Condition="'$(DotNetFinalPublish)' == 'true'">true</ShouldGenerateProductVersionFiles>
96-
</PropertyGroup>
9758

9859
<Target Name="GenerateProductVersionFiles"
9960
DependsOnTargets="GetNonStableProductVersion"
@@ -128,12 +89,12 @@
12889
DependsOnTargets="GetNonStableProductVersion"
12990
BeforeTargets="PublishToAzureDevOpsArtifacts"
13091
AfterTargets="GenerateChecksumsFromArtifacts">
131-
<ItemGroup Condition="'$(DotNetFinalPublish)' == 'true' or '$(DotNetBuildOrchestrator)' == 'true'">
92+
<ItemGroup Condition="'$(DotNetBuildOrchestrator)' == 'true'">
13293
<Artifact Condition="'%(Artifact.Kind)' != 'Package' and '%(Artifact.RelativeBlobPath)' == ''"
13394
RelativeBlobPath="Runtime/$(NonStableProductVersion)/%(Artifact.SubBlobFolder)%(Filename)%(Extension)" />
13495
</ItemGroup>
13596
<!-- 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. -->
136-
<ItemGroup Condition="'$(DotNetFinalPublish)' != 'true' and '$(DotNetBuildOrchestrator)' != 'true'">
97+
<ItemGroup Condition="'$(DotNetBuildOrchestrator)' != 'true'">
13798
<Artifact Condition="'%(Artifact.Kind)' == 'Blob' and '%(Artifact.IsShipping)' == 'true'"
13899
RelativeBlobPath="packages/$(Configuration)/Shipping/%(Filename)%(Extension)" />
139100
<Artifact Condition="'%(Artifact.Kind)' == 'Blob' and '%(Artifact.IsShipping)' != 'true'"

eng/Signing.props

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
<TargetRid>$(OutputRID)</TargetRid>
2727

2828
<!-- The final stage of the runtime official build should publish everything. -->
29-
<EnableDefaultRidSpecificArtifacts Condition="'$(DotNetFinalPublish)' != ''">false</EnableDefaultRidSpecificArtifacts>
3029
<EnableDefaultRidSpecificArtifacts Condition="'$(EnableDefaultRidSpecificArtifacts)' == '' and '$(DotNetBuildOrchestrator)' != 'true'">true</EnableDefaultRidSpecificArtifacts>
3130

3231
<UseDotNetCertificate>true</UseDotNetCertificate>
@@ -62,7 +61,7 @@
6261
<FileSignInfo Include="Mono.Cecil.Rocks.dll" CertificateName="3PartySHA2" />
6362
</ItemGroup>
6463

65-
<ItemGroup Condition="'$(DotNetFinalPublish)' != 'true'">
64+
<ItemGroup>
6665
<BlobArtifact Include="$(ArtifactsPackagesDir)**\*.tar.gz;
6766
$(ArtifactsPackagesDir)**\*.zip;
6867
$(ArtifactsPackagesDir)**\*.deb;
@@ -78,14 +77,6 @@
7877
</BlobArtifact>
7978
</ItemGroup>
8079

81-
<!-- In the runtime official build, we only sign a subset of files. -->
82-
<ItemGroup Condition="'$(DotNetFinalPublish)' == 'true'">
83-
<BlobArtifact Include="$(ArtifactsPackagesDir)**\*.msi;
84-
$(ArtifactsPackagesDir)**\*.exe;
85-
$(ArtifactsPackagesDir)**\*.zip"
86-
SkipPublish="true" />
87-
</ItemGroup>
88-
8980
<ItemGroup Condition="'$(EnableBlobArtifacts)' == 'true'">
9081
<Artifact Include="@(BlobArtifact)" />
9182

eng/pipelines/common/global-build-job.yml

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,24 +54,7 @@ jobs:
5454
testResultsFormat: ${{ parameters.testResultsFormat }}
5555
enableMicrobuild: ${{ parameters.isOfficialBuild }}
5656
enableMicrobuildForMacAndLinux: ${{ parameters.isOfficialBuild }}
57-
58-
templateContext:
59-
${{ if ne(parameters.templateContext, '') }}:
60-
${{ each pair in parameters.templateContext }}:
61-
${{ if notIn(pair.key, 'outputs') }}:
62-
${{ pair.key }}: ${{ pair.value }}
63-
outputs:
64-
- ${{ if ne(parameters.templateContext.outputs, '') }}:
65-
- ${{ each output in parameters.templateContext.outputs }}:
66-
${{ output.key }}: ${{ output.value }}
67-
- ${{ if eq(parameters.isOfficialBuild, true) }}:
68-
- output: pipelineArtifact
69-
displayName: 'Publish Pipeline Artifacts'
70-
${{ if eq(parameters.hostedOs, '') }}:
71-
artifactName: ${{ format('build_{0}{1}_{2}_{3}_{4}_Artifacts', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig, parameters.nameSuffix) }}
72-
${{ if ne(parameters.hostedOs, '') }}:
73-
artifactName: ${{ format('build_{0}{1}_{2}_{3}_{4}_{5}_Artifacts', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.hostedOs, parameters.buildConfig, parameters.nameSuffix) }}
74-
targetPath: $(Build.SourcesDirectory)/artifacts/staging
57+
templateContext: ${{ parameters.templateContext }}
7558

7659
artifacts:
7760
publish:

eng/pipelines/common/templates/template1es.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ extends:
2222
parameters:
2323
sdl:
2424
codeql:
25-
compiled:
25+
compiled:
2626
enabled: false
27-
justificationForDisabling: 'CodeQL is run on the runtime-codeql pipeline'
27+
justificationForDisabling: 'CodeQL is run manually on the runtime-codeql pipeline'
2828
credscan:
2929
suppressionsFile: $(Build.SourcesDirectory)/.config/CredScanSuppressions.json
3030
policheck:

eng/pipelines/official/pipeline.yml

Lines changed: 0 additions & 30 deletions
This file was deleted.

eng/pipelines/official/prepare-signed-artifacts.yml

Lines changed: 0 additions & 73 deletions
This file was deleted.

eng/pipelines/runtime-codeql.yml

Lines changed: 50 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,51 +28,80 @@ variables:
2828
extends:
2929
template: /eng/pipelines/common/templates/pipeline-with-resources.yml
3030
parameters:
31+
isOfficialBuild: true
3132
stages:
3233
- stage: Build
3334
jobs:
34-
3535
#
36-
# Build CoreCLR runtime packs
36+
# Build all runtime packs to ensure that the SDL tooling can analyze the code in this repo (including all dependencies on all platforms).
3737
#
3838
- template: /eng/pipelines/common/platform-matrix.yml
3939
parameters:
4040
jobTemplate: /eng/pipelines/common/global-build-job.yml
4141
buildConfig: release
4242
platforms:
43-
- linux_x64
4443
- windows_x64
44+
- linux_x64
45+
- linux_musl_arm64
46+
- android_x64
47+
- linux_bionic_x64
48+
- browser_wasm
49+
- wasi_wasm
4550
jobParameters:
46-
buildArgs: -s clr+libs+host+packs -c $(_BuildConfig)
47-
nameSuffix: AllSubsets_CoreCLR
48-
isOfficialBuild: ${{ variables.isOfficialBuild }}
51+
templatePath: 'templates-official'
52+
buildArgs: -c $(_BuildConfig) -restore -build -pack /p:DotNetBuildAllRuntimePacks=true
53+
nameSuffix: CodeQL
54+
isOfficialBuild: false
4955
timeoutInMinutes: 360
5056
preBuildSteps:
5157
- task: CodeQL3000Init@0
5258
displayName: Initialize CodeQL (manually-injected)
5359
postBuildSteps:
5460
- task: CodeQL3000Finalize@0
5561
displayName: Finalize CodeQL (manually-injected)
62+
- task: CopyFiles@2
63+
displayName: Gather packages for publish to artifacts
64+
inputs:
65+
SourceFolder: 'artifacts/packages'
66+
Contents: '**'
67+
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
68+
templateContext:
69+
outputs:
70+
- output: pipelineArtifact
71+
displayName: Publish artifacts
72+
targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
73+
artifactName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
74+
condition: always()
75+
retryCountOnTaskFailure: 10 # for any logs being locked
76+
continueOnError: true
5677

57-
#
58-
# Build Mono runtime packs
59-
#
6078
- template: /eng/pipelines/common/platform-matrix.yml
6179
parameters:
6280
jobTemplate: /eng/pipelines/common/global-build-job.yml
6381
buildConfig: release
64-
runtimeFlavor: mono
6582
platforms:
66-
- linux_x64
67-
- windows_x64
83+
- maccatalyst_x64
84+
- osx_arm64
85+
- tvos_arm64
86+
- ios_arm64
6887
jobParameters:
69-
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
70-
nameSuffix: AllSubsets_Mono
71-
isOfficialBuild: ${{ variables.isOfficialBuild }}
72-
timeoutInMinutes: 360
73-
preBuildSteps:
74-
- task: CodeQL3000Init@0
75-
displayName: Initialize CodeQL (manually-injected)
88+
templatePath: 'templates-official'
89+
buildArgs: -c $(_BuildConfig) -restore -build -pack /p:DotNetBuildAllRuntimePacks=true
90+
isOfficialBuild: false
91+
timeoutInMinutes: 120
7692
postBuildSteps:
77-
- task: CodeQL3000Finalize@0
78-
displayName: Finalize CodeQL (manually-injected)
93+
- task: CopyFiles@2
94+
displayName: Gather packages for publish to artifacts
95+
inputs:
96+
SourceFolder: 'artifacts/packages'
97+
Contents: '**'
98+
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
99+
templateContext:
100+
outputs:
101+
- output: pipelineArtifact
102+
displayName: Publish artifacts
103+
targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
104+
artifactName: BuildArtifacts_$(osGroup)$(osSubgroup)_$(archType)_$(_BuildConfig)
105+
condition: always()
106+
retryCountOnTaskFailure: 10 # for any logs being locked
107+
continueOnError: true

0 commit comments

Comments
 (0)