Skip to content

Commit 501fde3

Browse files
authored
Merge pull request #724 from SteveL-MSFT/3.0.1-release-pipeline
Backport 3.0: release pipeline and `_inDesiredState` updates
2 parents cda3997 + 12426c0 commit 501fde3

File tree

23 files changed

+559
-440
lines changed

23 files changed

+559
-440
lines changed

.github/workflows/rust.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ name: Rust
22

33
on:
44
push:
5-
branches: [ "main", "v3.0.0" ]
5+
branches: [ "main", "release/v3.0.0" ]
66
pull_request:
7-
branches: [ "main", "v3.0.0" ]
7+
branches: [ "main", "release/v3.0.0" ]
88
paths-ignore:
99
- "docs/**"
1010
- "*.md"

.pipelines/DSC-Official.yml

+31-162
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ schedules:
1818
variables:
1919
BuildConfiguration: 'release'
2020
PackageRoot: '$(System.ArtifactsDirectory)/Packages'
21-
# LinuxContainerImage: 'mcr.microsoft.com/onebranch/cbl-mariner/build:2.0'
2221
WindowsContainerImage: 'onebranch.azurecr.io/windows/ltsc2022/vse2022:latest'
2322
Codeql.TSAEnabled: true
2423

@@ -85,120 +84,46 @@ extends:
8584
Write-Host "##$vstsCommandString"
8685
name: Package
8786
88-
- job: BuildWin
87+
- job: BuildWin_x64
8988
dependsOn: SetPackageVersion
90-
strategy:
91-
matrix:
92-
Windows x64:
93-
Suffix: x64
94-
buildName: x86_64-pc-windows-msvc
95-
Windows x64_arm64:
96-
Suffix: arm64
97-
buildName: aarch64-pc-windows-msvc
9889
variables:
99-
PackageVersion: $[ dependencies.SetPackageVersion.outputs['Package.Version'] ]
10090
ob_sdl_tsa_configFile: '$(Build.SourcesDirectory)\DSC\.config\tsaoptions.json'
10191
ob_outputDirectory: '$(Build.ArtifactStagingDirectory)'
102-
ob_artifactSuffix: $(Suffix)
103-
repoRoot: '$(Build.SourcesDirectory)\DSC'
10492
signSrcPath: '$(Build.SourcesDirectory)\out'
10593
ob_sdl_sbom_enabled: true
10694
ob_signing_setup_enabled: true
10795
ob_sdl_codeql_compiled_enabled: true
10896
pool:
10997
type: windows
110-
displayName: BuildWin
11198
steps:
112-
- checkout: self
113-
env:
114-
ob_restore_phase: true
115-
- task: CodeQL3000Init@0 # Add CodeQL Init task right before your 'Build' step.
116-
inputs:
117-
Enabled: true
118-
AnalyzeInPipeline: true
119-
Language: rust
120-
env:
121-
ob_restore_phase: true
122-
- pwsh: |
123-
$tmpdir = "$(Agent.TempDirectory)"
124-
Write-Host "##vso[task.setvariable variable=CARGO_TARGET_DIR;]$tmpdir"
125-
displayName: 🛠️ Workaround for the LoadLibrary ACCESS_VIOLATION OneBranch issue
126-
env:
127-
ob_restore_phase: true
128-
- task: RustInstaller@1
129-
inputs:
130-
rustVersion: ms-stable
131-
toolchainFeed: https://pkgs.dev.azure.com/mscodehub/Rust/_packaging/Rust/nuget/v3/index.json
132-
additionalTargets: $(buildName)
133-
displayName: Install Rust
134-
env:
135-
ob_restore_phase: true
136-
- pwsh: |
137-
Set-Location "$(Build.SourcesDirectory)/DSC"
138-
$LLVMBIN = "$($env:PROGRAMFILES)\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\bin"
139-
if (!(Test-Path $LLVMBIN)) {
140-
throw "LLVM path '$LLVMBIN' does not exist"
141-
}
142-
$env:PATH += ";$LLVMBIN"
143-
write-verbose -verbose (gcm clang.exe | out-string)
144-
./build.ps1 -Release -Architecture $(buildName) -SkipLinkCheck
145-
displayName: 'Build $(buildName)'
146-
env:
147-
ob_restore_phase: true
148-
condition: succeeded()
149-
- task: CodeQL3000Finalize@0 # Add CodeQL Finalize task right after your 'Build' step.
150-
condition: always()
151-
env:
152-
ob_restore_phase: true
153-
- pwsh: |
154-
$null = New-Item -ItemType Directory -Path "$(PackageRoot)" -ErrorAction Ignore
155-
$null = New-Item -ItemType Directory -Path "$(PackageRoot)/out" -ErrorAction Ignore
156-
$null = New-Item -ItemType Directory -Path "$(signSrcPath)" -ErrorAction Ignore
157-
# workaround known issue of building in OneBranch copying from TMP folder
158-
$null = New-Item -ItemType Directory -Path "$(signSrcPath)" -ErrorAction Ignore
159-
# copy only the exes from the TMP folder since it contains intermediately built files we don't want to sign
160-
write-host 'Binaries in $(env:CARGO_TARGET_DIR)'
161-
Copy-Item -Path "$env:CARGO_TARGET_DIR/$(buildName)/$(BuildConfiguration)/*.exe" -Destination "$(signSrcPath)" -Verbose
162-
Copy-Item -Path "$(Build.SourcesDirectory)/DSC/bin/$(buildName)/$(BuildConfiguration)/*" -Recurse -Destination "$(signSrcPath)" -Verbose -Force
163-
write-host 'Binaries in $(signSrcPath)'
164-
dir -r "$(signSrcPath)"
165-
displayName: Copy built binaries
166-
env:
167-
ob_restore_phase: true
168-
condition: succeeded()
169-
- task: onebranch.pipeline.signing@1
170-
displayName: Sign 1st party files
171-
inputs:
172-
command: 'sign'
173-
signing_profile: external_distribution
174-
files_to_sign: |
175-
**\*.exe;
176-
**\*.ps1;
177-
**\*.psd1;
178-
**\*.psm1;
179-
search_root: $(signSrcPath)
180-
- task: CopyFiles@2
181-
displayName: "Copy signed files to build target dir"
182-
inputs:
183-
SourceFolder: "$(signSrcPath)"
184-
Contents: '**'
185-
TargetFolder: $(Build.SourcesDirectory)/DSC/bin/$(buildName)/$(BuildConfiguration)
186-
OverWrite: true
187-
- pwsh: |
188-
Set-Location "$(Build.SourcesDirectory)/DSC"
189-
./build.ps1 -PackageType zip -Architecture $(buildName) -Release
190-
Copy-Item ./bin/*.zip "$(ob_outputDirectory)"
191-
displayName: 'Zip $(buildName)'
192-
condition: succeeded()
193-
- pwsh: |
194-
Set-Location "$(Build.SourcesDirectory)/DSC"
195-
./build.ps1 -PackageType msix -Architecture $(buildName) -Release -UseX64MakeAppx
196-
Copy-Item ./bin/msix/*.msix "$(ob_outputDirectory)" -Verbose
197-
displayName: 'Create msix for $(buildName)'
198-
condition: succeeded()
99+
- template: .pipelines/DSC-Windows.yml@self
100+
parameters:
101+
buildName: x86_64-pc-windows-msvc
102+
signSrcPath: '$(signSrcPath)'
103+
PackageRoot: '$(PackageRoot)'
104+
105+
- job: BuildWin_arm64
106+
dependsOn: SetPackageVersion
107+
variables:
108+
ob_sdl_tsa_configFile: '$(Build.SourcesDirectory)\DSC\.config\tsaoptions.json'
109+
ob_outputDirectory: '$(Build.ArtifactStagingDirectory)'
110+
signSrcPath: '$(Build.SourcesDirectory)\out'
111+
ob_sdl_sbom_enabled: true
112+
ob_signing_setup_enabled: true
113+
ob_sdl_codeql_compiled_enabled: true
114+
pool:
115+
type: windows
116+
steps:
117+
- template: .pipelines/DSC-Windows.yml@self
118+
parameters:
119+
buildName: aarch64-pc-windows-msvc
120+
signSrcPath: '$(signSrcPath)'
121+
PackageRoot: '$(PackageRoot)'
199122

200123
- job: CreateMsixBundle
201-
dependsOn: BuildWin
124+
dependsOn:
125+
- BuildWin_x64
126+
- BuildWin_arm64
202127
variables:
203128
ob_outputDirectory: '$(Build.ArtifactStagingDirectory)'
204129
ob_sdl_tsa_configFile: '$(Build.SourcesDirectory)\DSC\.config\tsaoptions.json'
@@ -210,77 +135,21 @@ extends:
210135
steps:
211136
- checkout: self
212137
- download: current
213-
artifact: drop_BuildAndSign_BuildWinx64
138+
artifact: drop_BuildAndSign_BuildWin_x64
214139
patterns: '*.msix'
215140
- download: current
216-
artifact: drop_BuildAndSign_BuildWinarm64
141+
artifact: drop_BuildAndSign_BuildWin_arm64
217142
patterns: '*.msix'
218143
- pwsh: |
219144
Set-Location "$(Build.SourcesDirectory)/DSC"
220145
$null = New-Item -ItemType Directory -Path "./bin/msix" -Force -ErrorAction Ignore
221-
Copy-Item "$(Pipeline.Workspace)/drop_BuildAndSign_BuildWinx64/*.msix" ./bin/msix -Verbose
222-
Copy-Item "$(Pipeline.Workspace)/drop_BuildAndSign_BuildWinarm64/*.msix" ./bin/msix -Verbose
146+
Copy-Item "$(Pipeline.Workspace)/drop_BuildAndSign_BuildWin_x64/*.msix" ./bin/msix -Verbose
147+
Copy-Item "$(Pipeline.Workspace)/drop_BuildAndSign_BuildWin_arm64/*.msix" ./bin/msix -Verbose
223148
./build.ps1 -PackageType msixbundle
224149
Copy-Item ./bin/*.msixbundle "$(ob_outputDirectory)"
225150
displayName: 'Create msixbundle'
226151
condition: succeeded()
227152
228-
# - job: BuildLinux
229-
# dependsOn: SetPackageVersion
230-
# variables:
231-
# LinuxContainerImage: 'onebranch.azurecr.io/linux/ubuntu-2204:latest'
232-
# PackageVersion: $[ dependencies.SetPackageVersion.outputs['Package.Version'] ]
233-
# ob_outputDirectory: '$(Build.ArtifactStagingDirectory)'
234-
# displayName: Linux-x64-gnu
235-
# pool:
236-
# type: linux
237-
# steps:
238-
# - task: RustInstaller@1
239-
# inputs:
240-
# rustVersion: ms-stable
241-
# toolchainFeed: https://pkgs.dev.azure.com/mscodehub/Rust/_packaging/Rust/nuget/v3/index.json
242-
# additionalTargets: x86_64-unknown-linux-gnu
243-
# displayName: Install Rust
244-
# env:
245-
# ob_restore_phase: true
246-
# - pwsh: |
247-
# ./build.ps1 -Release -Architecture x86_64-unknown-linux-gnu
248-
# ./build.ps1 -PackageType tgz -Architecture x86_64-unknown-linux-gnu -Release
249-
# Copy-Item ./bin/*.tar.gz "$(ob_outputDirectory)"
250-
# displayName: 'Build x86_64-unknown-linux-gnu'
251-
# condition: succeeded()
252-
253-
# - job: BuildLinuxArm64
254-
# dependsOn: SetPackageVersion
255-
# variables:
256-
# LinuxContainerImage: 'onebranch.azurecr.io/linux/ubuntu-2004-arm64:latest'
257-
# PackageVersion: $[ dependencies.SetPackageVersion.outputs['Package.Version'] ]
258-
# ob_outputDirectory: '$(Build.ArtifactStagingDirectory)'
259-
# displayName: Linux-ARM64-gnu
260-
# pool:
261-
# type: linux
262-
# hostArchitecture: arm64
263-
# steps:
264-
# - task: RustInstaller@1
265-
# inputs:
266-
# rustVersion: ms-stable
267-
# toolchainFeed: https://pkgs.dev.azure.com/mscodehub/Rust/_packaging/Rust/nuget/v3/index.json
268-
# additionalTargets: aarch64-unknown-linux-gnu
269-
# displayName: Install Rust
270-
# env:
271-
# ob_restore_phase: true
272-
# - pwsh: |
273-
# apt update
274-
# apt -y install gcc-aarch64-linux-gnu
275-
# if ((openssl version -d) -match 'OPENSSLDIR: "(?<dir>.*?)"') {
276-
# $env:OPENSSL_LIB_DIR = $matches['dir']
277-
# }
278-
# ./build.ps1 -Release -Architecture aarch64-unknown-linux-gnu
279-
# ./build.ps1 -PackageType tgz -Architecture aarch64-unknown-linux-gnu -Release
280-
# Copy-Item ./bin/*.tar.gz "$(ob_outputDirectory)"
281-
# displayName: 'Build aarch64-unknown-linux-gnu'
282-
# condition: succeeded()
283-
284153
- job: BuildLinuxMusl
285154
dependsOn: SetPackageVersion
286155
variables:

.pipelines/DSC-Windows.yml

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
parameters:
2+
- name: buildName
3+
type: string
4+
- name: signSrcPath
5+
type: string
6+
- name: PackageRoot
7+
type: string
8+
- name: BuildConfiguration
9+
type: string
10+
default: Release
11+
12+
steps:
13+
- checkout: self
14+
env:
15+
ob_restore_phase: true
16+
- task: CodeQL3000Init@0 # Add CodeQL Init task right before your 'Build' step.
17+
inputs:
18+
Enabled: true
19+
AnalyzeInPipeline: true
20+
Language: rust
21+
env:
22+
ob_restore_phase: true
23+
- pwsh: |
24+
$tmpdir = "$(Agent.TempDirectory)"
25+
Write-Host "##vso[task.setvariable variable=CARGO_TARGET_DIR;]$tmpdir"
26+
displayName: 🛠️ Workaround for the LoadLibrary ACCESS_VIOLATION OneBranch issue
27+
env:
28+
ob_restore_phase: true
29+
- task: RustInstaller@1
30+
inputs:
31+
rustVersion: ms-stable
32+
toolchainFeed: https://pkgs.dev.azure.com/mscodehub/Rust/_packaging/Rust/nuget/v3/index.json
33+
additionalTargets: ${{ parameters.buildName }}
34+
displayName: Install Rust
35+
env:
36+
ob_restore_phase: true
37+
- pwsh: |
38+
Set-Location "$(Build.SourcesDirectory)/DSC"
39+
$LLVMBIN = "$($env:PROGRAMFILES)\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\bin"
40+
if (!(Test-Path $LLVMBIN)) {
41+
throw "LLVM path '$LLVMBIN' does not exist"
42+
}
43+
$env:PATH += ";$LLVMBIN"
44+
write-verbose -verbose (gcm clang.exe | out-string)
45+
./build.ps1 -Release -Architecture ${{ parameters.buildName }} -SkipLinkCheck
46+
displayName: 'Build ${{ parameters.buildName }}'
47+
env:
48+
ob_restore_phase: true
49+
condition: succeeded()
50+
- task: CodeQL3000Finalize@0 # Add CodeQL Finalize task right after your 'Build' step.
51+
condition: always()
52+
env:
53+
ob_restore_phase: true
54+
- pwsh: |
55+
$null = New-Item -ItemType Directory -Path "${{ parameters.PackageRoot }}" -ErrorAction Ignore
56+
$null = New-Item -ItemType Directory -Path "${{ parameters.PackageRoot }}/out" -ErrorAction Ignore
57+
$null = New-Item -ItemType Directory -Path "${{ parameters.signSrcPath }}" -ErrorAction Ignore
58+
# workaround known issue of building in OneBranch copying from TMP folder
59+
$null = New-Item -ItemType Directory -Path "${{ parameters.signSrcPath }}" -ErrorAction Ignore
60+
# copy only the exes from the TMP folder since it contains intermediately built files we don't want to sign
61+
write-host 'Binaries in $(env:CARGO_TARGET_DIR)'
62+
Copy-Item -Path "$env:CARGO_TARGET_DIR/${{ parameters.buildName }}/${{ parameters.BuildConfiguration }}/*.exe" -Destination "${{ parameters.signSrcPath }}" -Verbose
63+
Copy-Item -Path "$(Build.SourcesDirectory)/DSC/bin/${{ parameters.buildName }}/${{ parameters.BuildConfiguration }}/*" -Recurse -Destination "${{ parameters.signSrcPath }}" -Verbose -Force
64+
write-host 'Binaries in ${{ parameters.signSrcPath }}'
65+
dir -r "${{ parameters.signSrcPath }}"
66+
displayName: Copy built binaries
67+
env:
68+
ob_restore_phase: true
69+
condition: succeeded()
70+
- task: onebranch.pipeline.signing@1
71+
displayName: Sign 1st party files
72+
inputs:
73+
command: 'sign'
74+
signing_profile: external_distribution
75+
files_to_sign: |
76+
**\*.exe;
77+
**\*.ps1;
78+
**\*.psd1;
79+
**\*.psm1;
80+
search_root: ${{ parameters.signSrcPath }}
81+
- task: CopyFiles@2
82+
displayName: "Copy signed files to build target dir"
83+
inputs:
84+
SourceFolder: "${{ parameters.signSrcPath }}"
85+
Contents: '**'
86+
TargetFolder: $(Build.SourcesDirectory)/DSC/bin/${{ parameters.buildName }}/${{ parameters.BuildConfiguration }}
87+
OverWrite: true
88+
- pwsh: |
89+
Set-Location "$(Build.SourcesDirectory)/DSC"
90+
./build.ps1 -PackageType zip -Architecture ${{ parameters.buildName }} -Release
91+
Copy-Item ./bin/*.zip "$(Build.ArtifactStagingDirectory)" -Verbose
92+
displayName: 'Zip ${{ parameters.buildName }}'
93+
condition: succeeded()
94+
- pwsh: |
95+
Set-Location "$(Build.SourcesDirectory)/DSC"
96+
./build.ps1 -PackageType msix -Architecture ${{ parameters.buildName }} -Release -UseX64MakeAppx
97+
Copy-Item ./bin/msix/*.msix "$(Build.ArtifactStagingDirectory)" -Verbose
98+
displayName: 'Create msix for ${{ parameters.buildName }}'
99+
condition: succeeded()

0 commit comments

Comments
 (0)