8000 Added Deploy Box Product Pathway to GitHub Release and NuGet Release … · awakecoding/PowerShell@cc02e31 · GitHub
[go: up one dir, main page]

Skip to content

Commit cc02e31

Browse files
authored
Added Deploy Box Product Pathway to GitHub Release and NuGet Release Pipelines (PowerShell#24583)
1 parent 435bd05 commit cc02e31

8 files changed

+402
-198
lines changed

.pipelines/PowerShell-Release-Official.yml

Lines changed: 72 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ variables:
5050
- name: ob_outputDirectory
5151
value: '$(Build.ArtifactStagingDirectory)/ONEBRANCH_ARTIFACT'
5252
- name: WindowsContainerImage
53-
value: 'onebranch.azurecr.io/windows/ltsc2019/vse2022:latest'
53+
value: 'onebranch.azurecr.io/windows/ltsc2022/vse2022:latest'
5454
- name: LinuxContainerImage
5555
value: mcr.microsoft.com/onebranch/cbl-mariner/build:2.0
5656
- name: ReleaseTagVar
@@ -79,12 +79,12 @@ resources:
7979
extends:
8080
template: v2/OneBranch.Official.CrossPlat.yml@templates
8181
parameters:
82-
# using Monitor as copy blob is being blocked by the network
82+
release:
83+
category: NonAzure
8384
featureFlags:
84-
LinuxHostVersion:
85-
Network: Monitor
8685
WindowsHostVersion:
87-
Network: Monitor
86+
Version: 2022
87+
Network: Netlock
8888
cloudvault:
8989
enabled: false
9090
globalSdl:
@@ -110,13 +110,23 @@ extends:
110110
tsaOptionsFile: .config\tsaoptions.json
111111

112112
stages:
113+
- stage: DownloadPackages
114+
displayName: 'Download Packages'
115+
dependsOn: []
116+
jobs:
117+
- template: /.pipelines/templates/release-download-packages.yml@self
118+
113119
- stage: msixbundle
114120
displayName: 'Create MSIX Bundle'
121+
dependsOn: []
122+
variables:
123+
ob_release_environment: Test
115124
jobs:
116125
- template: /.pipelines/templates/release-create-msix.yml@self
117126

118127
- stage: validateSdk
119128
displayName: 'Validate SDK'
129+
dependsOn: []
120130
jobs:
121131
- template: /.pipelines/templates/release-validate-sdk.yml@self
122132
parameters:
@@ -141,6 +151,7 @@ extends:
141151

142152
- stage: gbltool
143153
displayName: 'Validate Global tools'
154+
dependsOn: []
144155
jobs:
145156
- template: /.pipelines/templates/release-validate-globaltools.yml@self
146157
parameters:
@@ -158,6 +169,7 @@ extends:
158169

159170
- stage: fxdpackages
160171
displayName: 'Validate FXD Packages'
172+
dependsOn: []
161173
jobs:
162174
- template: /.pipelines/templates/release-validate-fxdpackages.yml@self
163175
parameters:
@@ -194,6 +206,7 @@ extends:
194206

195207
- stage: validatePackages
196208
displayName: 'Validate Packages'
209+
dependsOn: []
197210
jobs:
198211
- template: /.pipelines/templates/release-validate-packagenames.yml@self
199212

@@ -262,38 +275,65 @@ extends:
262275
Update and merge the changelog for the release.
263276
This step is required for creating GitHub draft release.
264277
278+
- stage: PublishGitHubRelease
279+
displayName: Publish GitHub Release
280+
dependsOn:
281+
- DownloadPackages
282+
- UpdateChangeLog
283+
variables:
284+
ob_release_environment: Production
285+
jobs:
286+
- template: /.pipelines/templates/release-githubtasks.yml@self
287+
288+
- stage: PushGitTagAndMakeDraftPublic
289+
displayName: Push Git Tag and Make Draft Public
290+
dependsOn: PublishGitHubRelease
291+
jobs:
292+
- template: /.pipelines/templates/approvalJob.yml@self
293+
parameters:
294+
displayName: Push Git Tag
295+
jobName: PushGitTag
296+
instructions: |
297+
Push the git tag to upstream
298+
299+
- template: /.pipelines/templates/approvalJob.yml@self
300+
parameters:
301+
displayName: Make Draft Public
302+
dependsOnJob: PushGitTag
303+
jobName: DraftPublic
304+
instructions: |
305+
Make the GitHub Release Draft Public
306+
265307
- stage: BlobPublic
266308
displayName: Make Blob Public
267-
dependsOn: UpdateChangeLog
309+
dependsOn:
310+
- UpdateChangeLog
311+
- PushGitTagAndMakeDraftPublic
268312
jobs:
269313
- template: /.pipelines/templates/release-MakeBlobPublic.yml@self
270314
parameters:
271-
SkipPSInfraInstallers: ${{ parameters.SkipPSInfraInstallers }}
272-
273-
- stage: PublishGitHubRelease
274-
displayName: Publish GitHub Release
275-
dependsOn: BlobPublic
276-
jobs:
277-
- template: /.pipelines/templates/release-githubtasks.yml@self
278-
315+
SkipPSInfraInstallers: ${{ parameters.SkipPSInfraInstallers }}
316+
279317
- stage: PublishNuGet
280318
displayName: Publish NuGet
281-
dependsOn: PublishGitHubRelease
319+
dependsOn: PushGitTagAndMakeDraftPublic
320+
variables:
321+
ob_release_environment: Production
282322
jobs:
283323
- template: /.pipelines/templates/release-publish-nuget.yml@self
284324
parameters:
285325
skipPublish: true
286326

287327
- stage: PublishPMC
288328
displayName: Publish PMC
289-
dependsOn: PublishGitHubRelease
329+
dependsOn: PushGitTagAndMakeDraftPublic
290330
jobs:
291331
- template: /.pipelines/templates/release-publish-pmc.yml@self
292332
parameters:
293333
skipPublish: ${{ parameters.SkipPMCPublish }}
294334

295335
- stage: ReleaseDocker
296-
dependsOn: PublishGitHubRelease
336+
dependsOn: PushGitTagAndMakeDraftPublic
297337
displayName: 'Docker Release'
298338
jobs:
299339
- template: /.pipelines/templates/approvalJob.yml@self
@@ -312,7 +352,7 @@ extends:
312352
Kickoff docker release
313353
314354
- stage: UpdateDotnetDocker
315-
dependsOn: PublishGitHubRelease
355+
dependsOn: PushGitTagAndMakeDraftPublic
316356
displayName: Update DotNet SDK Docker images
317357
jobs:
318358
- template: /.pipelines/templates/approvalJob.yml@self
@@ -327,7 +367,7 @@ extends:
327367
4. create PR targeting nightly branch
328368
329369
- stage: UpdateWinGet
330-
dependsOn: PublishGitHubRelease
370+
dependsOn: PushGitTagAndMakeDraftPublic
331371
displayName: Add manifest entry to winget
332372
jobs:
333373
- template: /.pipelines/templates/approvalJob.yml@self
@@ -338,7 +378,7 @@ extends:
338378
This is typically done by the community 1-2 days after the release.
339379
340380
- stage: PublishMsix
341-
dependsOn: PublishGitHubRelease
381+
dependsOn: PushGitTagAndMakeDraftPublic
342382
displayName: Publish MSIX to store
343383
jobs:
344384
- template: /.pipelines/templates/approvalJob.yml@self
@@ -349,7 +389,7 @@ extends:
349389
Ask Steve to release MSIX bundle package to Store
350390
351391
- stage: PublishVPack
352-
dependsOn: PublishGitHubRelease
392+
dependsOn: PushGitTagAndMakeDraftPublic
353393
displayName: Release vPack
354394
jobs:
355395
- template: /.pipelines/templates/approvalJob.yml@self
@@ -367,20 +407,22 @@ extends:
367407
# - template: templates/release-UpdateDepsJson.yml
368408

369409
- stage: UploadBuildInfoJson
370-
dependsOn: PublishGitHubRelease
410+
dependsOn: PushGitTagAndMakeDraftPublic
371411
displayName: Upload BuildInfo.json
372412
jobs:
373413
- template: /.pipelines/templates/release-upload-buildinfo.yml@self
374414

375415
- stage: ReleaseSymbols
376-
dependsOn: PublishGitHubRelease
416+
dependsOn: PushGitTagAndMakeDraftPublic
377417
displayName: Release Symbols
378418
jobs:
379419
- template: /.pipelines/templates/release-symbols.yml@self
380420

381421
- stage: ChangesToMaster
382422
displayName: Ensure changes are in GH master
383-
dependsOn: ['PublishNuGet', 'PublishPMC']
423+
dependsOn:
424+
- PublishNuGet
425+
- PublishPMC
384426
jobs:
385427
- template: /.pipelines/templates/approvalJob.yml@self
386428
parameters:
@@ -391,7 +433,7 @@ extends:
391433
392434
- stage: ReleaseSnap
393435
displayName: Release Snap
394-
dependsOn: 'ChangesToMaster'
436+
dependsOn: ChangesToMaster
395437
jobs:
396438
- template: /.pipelines/templates/approvalJob.yml@self
397439
parameters:
@@ -402,7 +444,7 @@ extends:
402444
403445
- stage: ReleaseToMU
404446
displayName: Release to MU
405-
dependsOn: ['PublishNuGet', 'PublishPMC', 'ChangesToMaster']
447+
dependsOn: PushGitTagAndMakeDraftPublic # This only needs the blob to be available
406448
jobs:
407449
- template: /.pipelines/templates/approvalJob.yml@self
408450
parameters:
@@ -412,7 +454,10 @@ extends:
412454
413455
- stage: ReleaseClose
414456
displayName: Finish Release
415-
dependsOn: ['ReleaseToMU', 'ReleaseSymbols', 'ReleaseSnap']
457+
dependsOn:
458+
- ReleaseToMU
459+
- ReleaseSymbols
460+
- ReleaseSnap
416461
jobs:
417462
- template: /.pipelines/templates/approvalJob.yml@self
418463
parameters:
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
steps:
2+
- pwsh: |
3+
Write-Verbose -Verbose "Deploy Box Product Pathway Does Not Support the `"checkout`" task"
4+
if ($ENV:BUILD_REASON -eq 'PullRequest') {
5+
throw 'We dont support PRs'
6+
}
7+
8+
Write-Verbose -Verbose $ENV:BUILD_SOURCEBRANCH
9+
$branchName = $ENV:BUILD_SOURCEBRANCH -replace '^refs/heads/'
10+
Write-Verbose -Verbose "Branch Name: $branchName"
11+
git clone --depth 1 --branch $branchName https://$(mscodehubCodeReadPat)@mscodehub.visualstudio.com/PowerShellCore/_git/PowerShell '$(Pipeline.Workspace)/PowerShell'
12+
cd $(Pipeline.Workspace)/PowerShell
13+
displayName: Checkout Powershell Repository
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
jobs:
2+
- job: upload_packages
3+
displayName: Upload packages
4+
condition: succeeded()
5+
pool:
6+
type: windows
7+
variables:
8+
- template: ./variable/release-shared.yml@self
9+
parameters:
10+
REPOROOT: $(Build.SourcesDirectory)
11+
SBOM: true
12+
13+
steps:
14+
- pwsh: |
15+
Get-ChildItem -Path env: | Out-String -width 9999 -Stream | write-Verbose -Verbose
16+
displayName: Capture environment variables
17+
18+
- download: PSPackagesOfficial
19+
artifact: drop_linux_package_deb
20+
displayName: Download linux deb packages
21+
22+
- download: PSPackagesOfficial
23+
artifact: drop_linux_package_fxdependent
24+
displayName: Download linux fx packages
25+
26+
- download: PSPackagesOfficial
27+
artifact: drop_linux_package_mariner_arm64
28+
displayName: Download linux mariner packages
29+
30+
- download: PSPackagesOfficial
31+
artifact: drop_linux_package_mariner_x64
32+
displayName: Download linux mariner x64 packages
33+
34+
- download: PSPackagesOfficial
35+
artifact: drop_linux_package_minSize
36+
displayName: Download linux min packages
37+
38+
- download: PSPackagesOfficial
39+
artifact: drop_linux_package_rpm
40+
displayName: Download linux rpm packages
41+
42+
- download: PSPackagesOfficial
43+
artifact: drop_linux_package_tar
44+
displayName: Download linux tar packages
45+
46+
- download: PSPackagesOfficial
47+
artifact: drop_linux_package_tar_alpine
48+
displayName: Download linux tar alpine packages
49+
50+
- download: PSPackagesOfficial
51+
artifact: drop_linux_package_tar_alpine_fxd
52+
displayName: Download linux tar alpine fxd packages
53+
54+
- download: PSPackagesOfficial
55+
artifact: drop_linux_package_tar_arm
56+
displayName: Download linux tar arm packages
57+
58+
- download: PSPackagesOfficial
59+
artifact: drop_linux_package_tar_arm64
60+
displayName: Download linux tar arm 64 packages
61+
62+
- download: PSPackagesOfficial
63+
artifact: drop_nupkg_build_nupkg
64+
displayName: Download nupkg packages
65+
66+
- download: PSPackagesOfficial
67+
artifact: drop_windows_package_package_win_arm64
68+
displayName: Download windows arm64 packages
69+
70+
- download: PSPackagesOfficial
71+
artifact: drop_windows_package_package_win_fxdependent
72+
displayName: Download windows fxdependent packages
73+
74+
- download: PSPackagesOfficial
75+
artifact: drop_windows_package_package_win_fxdependentWinDesktop
76+
displayName: Download windows fxdependentWinDesktop packages
77+
78+
- download: PSPackagesOfficial
79+
artifact: drop_windows_package_package_win_minsize
80+
displayName: Download windows minsize packages
81+
82+
- download: PSPackagesOfficial
83+
artifact: drop_windows_package_package_win_x64
84+
displayName: Download windows x64 packages
85+
86+
- download: PSPackagesOfficial
87+
artifact: drop_windows_package_package_win_x86
88+
displayName: Download windows x86 packages
89+
90+
- download: PSPackagesOfficial
91+
artifact: macos-pkgs
92+
displayName: Download macos tar packages
93+
94+
- download: PSPackagesOfficial
95+
artifact: drop_mac_package_sign_package_macos_arm64
96+
displayName: Download macos arm packages
97+
98+
- download: PSPackagesOfficial
99+
artifact: drop_mac_package_sign_package_macos_x64
100+
displayName: Download macos x64 packages
101+
102+
- pwsh: |
103+
Get-ChildItem '$(Pipeline.Workspace)/PSPackagesOfficial' -Recurse | Select-Object -ExpandProperty FullName
104+
displayName: 'Capture downloads'
105+
106+
- pwsh: |
107+
$PackagesPath = '$(Pipeline.Workspace)/PSPackagesOfficial'
108+
Write-Verbose -Verbose "Copying Github Release files in $PackagesPath to use in Release Pipeline"
109+
110+
Write-Verbose -Verbose "Creating output directory for GitHub Release files: $(ob_outputDirectory)/GitHubPackages"
111+
New-Item -Path $(ob_outputDirectory)/GitHubPackages -ItemType Directory -Force
112+
Get-ChildItem -Path "$PackagesPath/*" -Recurse |
113+
Where-Object { $_.Extension -notin '.msix', '.nupkg' } |
114+
Where-Object { $_.Extension -in '.gz', '.pkg', '.msi', '.zip', '.deb', '.rpm', '.zip' } |
115+
Copy-Item -Destination $(ob_outputDirectory)/GitHubPackages -Recurse -Verbose
116+
117+
Write-Verbose -Verbose "Creating output directory for NuGet packages: $(ob_outputDirectory)/NuGetPackages"
118+
New-Item -Path $(ob_outputDirectory)/NuGetPackages -ItemType Directory -Force
119+
Get-ChildItem -Path "$PackagesPath/*" -Recurse |
120+
Where-Object { $_.Extension -eq '.nupkg' } |
121+
Copy-Item -Destination $(ob_outputDirectory)/NuGetPackages -Recurse -Verbose
122+
displayName: Copy downloads to Artifacts

0 commit comments

Comments
 (0)
0