Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 72 additions & 27 deletions .pipelines/PowerShell-Release-Official.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ variables:
- name: ob_outputDirectory
value: '$(Build.ArtifactStagingDirectory)/ONEBRANCH_ARTIFACT'
- name: WindowsContainerImage
value: 'onebranch.azurecr.io/windows/ltsc2019/vse2022:latest'
value: 'onebranch.azurecr.io/windows/ltsc2022/vse2022:latest'
- name: LinuxContainerImage
value: mcr.microsoft.com/onebranch/cbl-mariner/build:2.0
- name: ReleaseTagVar
Expand Down Expand Up @@ -79,12 +79,12 @@ resources:
extends:
template: v2/OneBranch.Official.CrossPlat.yml@templates
parameters:
# using Monitor as copy blob is being blocked by the network
release:
category: NonAzure
featureFlags:
LinuxHostVersion:
Network: Monitor
WindowsHostVersion:
Network: Monitor
Version: 2022
Network: Netlock
cloudvault:
enabled: false
globalSdl:
Expand All @@ -110,13 +110,23 @@ extends:
tsaOptionsFile: .config\tsaoptions.json

stages:
- stage: DownloadPackages
displayName: 'Download Packages'
dependsOn: []
jobs:
- template: /.pipelines/templates/release-download-packages.yml@self

- stage: msixbundle
displayName: 'Create MSIX Bundle'
dependsOn: []
variables:
ob_release_environment: Test
jobs:
- template: /.pipelines/templates/release-create-msix.yml@self

- stage: validateSdk
displayName: 'Validate SDK'
dependsOn: []
jobs:
- template: /.pipelines/templates/release-validate-sdk.yml@self
parameters:
Expand All @@ -141,6 +151,7 @@ extends:

- stage: gbltool
displayName: 'Validate Global tools'
dependsOn: []
jobs:
- template: /.pipelines/templates/release-validate-globaltools.yml@self
parameters:
Expand All @@ -158,6 +169,7 @@ extends:

- stage: fxdpackages
displayName: 'Validate FXD Packages'
dependsOn: []
jobs:
- template: /.pipelines/templates/release-validate-fxdpackages.yml@self
parameters:
Expand Down Expand Up @@ -194,6 +206,7 @@ extends:

- stage: validatePackages
displayName: 'Validate Packages'
dependsOn: []
jobs:
- template: /.pipelines/templates/release-validate-packagenames.yml@self

Expand Down Expand Up @@ -262,38 +275,65 @@ extends:
Update and merge the changelog for the release.
This step is required for creating GitHub draft release.

- stage: PublishGitHubRelease
displayName: Publish GitHub Release
dependsOn:
- DownloadPackages
- UpdateChangeLog
variables:
ob_release_environment: Production
jobs:
- template: /.pipelines/templates/release-githubtasks.yml@self

- stage: PushGitTagAndMakeDraftPublic
displayName: Push Git Tag and Make Draft Public
dependsOn: PublishGitHubRelease
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
parameters:
displayName: Push Git Tag
jobName: PushGitTag
instructions: |
Push the git tag to upstream

- template: /.pipelines/templates/approvalJob.yml@self
parameters:
displayName: Make Draft Public
dependsOnJob: PushGitTag
jobName: DraftPublic
instructions: |
Make the GitHub Release Draft Public

- stage: BlobPublic
displayName: Make Blob Public
dependsOn: UpdateChangeLog
dependsOn:
- UpdateChangeLog
- PushGitTagAndMakeDraftPublic
jobs:
- template: /.pipelines/templates/release-MakeBlobPublic.yml@self
parameters:
SkipPSInfraInstallers: ${{ parameters.SkipPSInfraInstallers }}

- stage: PublishGitHubRelease
displayName: Publish GitHub Release
dependsOn: BlobPublic
jobs:
- template: /.pipelines/templates/release-githubtasks.yml@self

SkipPSInfraInstallers: ${{ parameters.SkipPSInfraInstallers }}

- stage: PublishNuGet
displayName: Publish NuGet
dependsOn: PublishGitHubRelease
dependsOn: PushGitTagAndMakeDraftPublic
variables:
ob_release_environment: Production
jobs:
- template: /.pipelines/templates/release-publish-nuget.yml@self
parameters:
skipPublish: true

- stage: PublishPMC
displayName: Publish PMC
dependsOn: PublishGitHubRelease
dependsOn: PushGitTagAndMakeDraftPublic
jobs:
- template: /.pipelines/templates/release-publish-pmc.yml@self
parameters:
skipPublish: ${{ parameters.SkipPMCPublish }}

- stage: ReleaseDocker
dependsOn: PublishGitHubRelease
dependsOn: PushGitTagAndMakeDraftPublic
displayName: 'Docker Release'
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
Expand All @@ -312,7 +352,7 @@ extends:
Kickoff docker release

- stage: UpdateDotnetDocker
dependsOn: PublishGitHubRelease
dependsOn: PushGitTagAndMakeDraftPublic
displayName: Update DotNet SDK Docker images
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
Expand All @@ -327,7 +367,7 @@ extends:
4. create PR targeting nightly branch

- stage: UpdateWinGet
dependsOn: PublishGitHubRelease
dependsOn: PushGitTagAndMakeDraftPublic
displayName: Add manifest entry to winget
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
Expand All @@ -338,7 +378,7 @@ extends:
This is typically done by the community 1-2 days after the release.

- stage: PublishMsix
dependsOn: PublishGitHubRelease
dependsOn: PushGitTagAndMakeDraftPublic
displayName: Publish MSIX to store
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
Expand All @@ -349,7 +389,7 @@ extends:
Ask Steve to release MSIX bundle package to Store

- stage: PublishVPack
dependsOn: PublishGitHubRelease
dependsOn: PushGitTagAndMakeDraftPublic
displayName: Release vPack
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
Expand All @@ -367,20 +407,22 @@ extends:
# - template: templates/release-UpdateDepsJson.yml

- stage: UploadBuildInfoJson
dependsOn: PublishGitHubRelease
dependsOn: PushGitTagAndMakeDraftPublic
displayName: Upload BuildInfo.json
jobs:
- template: /.pipelines/templates/release-upload-buildinfo.yml@self

- stage: ReleaseSymbols
dependsOn: PublishGitHubRelease
dependsOn: PushGitTagAndMakeDraftPublic
displayName: Release Symbols
jobs:
- template: /.pipelines/templates/release-symbols.yml@self

- stage: ChangesToMaster
displayName: Ensure changes are in GH master
dependsOn: ['PublishNuGet', 'PublishPMC']
dependsOn:
- PublishNuGet
- PublishPMC
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
parameters:
Expand All @@ -391,7 +433,7 @@ extends:

- stage: ReleaseSnap
displayName: Release Snap
dependsOn: 'ChangesToMaster'
dependsOn: ChangesToMaster
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
parameters:
Expand All @@ -402,7 +444,7 @@ extends:

- stage: ReleaseToMU
displayName: Release to MU
dependsOn: ['PublishNuGet', 'PublishPMC', 'ChangesToMaster']
dependsOn: PushGitTagAndMakeDraftPublic # This only needs the blob to be available
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
parameters:
Expand All @@ -412,7 +454,10 @@ extends:

- stage: ReleaseClose
displayName: Finish Release
dependsOn: ['ReleaseToMU', 'ReleaseSymbols', 'ReleaseSnap']
dependsOn:
- ReleaseToMU
- ReleaseSymbols
- ReleaseSnap
jobs:
- template: /.pipelines/templates/approvalJob.yml@self
parameters:
Expand Down
13 changes: 13 additions & 0 deletions .pipelines/templates/release-checkout-pwsh-repo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
steps:
- pwsh: |
Write-Verbose -Verbose "Deploy Box Product Pathway Does Not Support the `"checkout`" task"
if ($ENV:BUILD_REASON -eq 'PullRequest') {
throw 'We dont support PRs'
}

Write-Verbose -Verbose $ENV:BUILD_SOURCEBRANCH
$branchName = $ENV:BUILD_SOURCEBRANCH -replace '^refs/heads/'
Write-Verbose -Verbose "Branch Name: $branchName"
git clone --depth 1 --branch $branchName https://$(mscodehubCodeReadPat)@mscodehub.visualstudio.com/PowerShellCore/_git/PowerShell '$(Pipeline.Workspace)/PowerShell'
cd $(Pipeline.Workspace)/PowerShell
displayName: Checkout Powershell Repository
122 changes: 122 additions & 0 deletions .pipelines/templates/release-download-packages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
jobs:
- job: upload_packages
displayName: Upload packages
condition: succeeded()
pool:
type: windows
variables:
- template: ./variable/release-shared.yml@self
parameters:
REPOROOT: $(Build.SourcesDirectory)
SBOM: true

steps:
- pwsh: |
Get-ChildItem -Path env: | Out-String -width 9999 -Stream | write-Verbose -Verbose
displayName: Capture environment variables

- download: PSPackagesOfficial
artifact: drop_linux_package_deb
displayName: Download linux deb packages

- download: PSPackagesOfficial
artifact: drop_linux_package_fxdependent
displayName: Download linux fx packages

- download: PSPackagesOfficial
artifact: drop_linux_package_mariner_arm64
displayName: Download linux mariner packages

- download: PSPackagesOfficial
artifact: drop_linux_package_mariner_x64
displayName: Download linux mariner x64 packages

- download: PSPackagesOfficial
artifact: drop_linux_package_minSize
displayName: Download linux min packages

- download: PSPackagesOfficial
artifact: drop_linux_package_rpm
displayName: Download linux rpm packages

- download: PSPackagesOfficial
artifact: drop_linux_package_tar
displayName: Download linux tar packages

- download: PSPackagesOfficial
artifact: drop_linux_package_tar_alpine
displayName: Download linux tar alpine packages

- download: PSPackagesOfficial
artifact: drop_linux_package_tar_alpine_fxd
displayName: Download linux tar alpine fxd packages

- download: PSPackagesOfficial
artifact: drop_linux_package_tar_arm
displayName: Download linux tar arm packages

- download: PSPackagesOfficial
artifact: drop_linux_package_tar_arm64
displayName: Download linux tar arm 64 packages

- download: PSPackagesOfficial
artifact: drop_nupkg_build_nupkg
displayName: Download nupkg packages

- download: PSPackagesOfficial
artifact: drop_windows_package_package_win_arm64
displayName: Download windows arm64 packages

- download: PSPackagesOfficial
artifact: drop_windows_package_package_win_fxdependent
displayName: Download windows fxdependent packages

- download: PSPackagesOfficial
artifact: drop_windows_package_package_win_fxdependentWinDesktop
displayName: Download windows fxdependentWinDesktop packages

- download: PSPackagesOfficial
artifact: drop_windows_package_package_win_minsize
displayName: Download windows minsize packages

- download: PSPackagesOfficial
artifact: drop_windows_package_package_win_x64
displayName: Download windows x64 packages

- download: PSPackagesOfficial
artifact: drop_windows_package_package_win_x86
displayName: Download windows x86 packages

- download: PSPackagesOfficial
artifact: macos-pkgs
displayName: Download macos tar packages

- download: PSPackagesOfficial
artifact: drop_mac_package_sign_package_macos_arm64
displayName: Download macos arm packages

- download: PSPackagesOfficial
artifact: drop_mac_package_sign_package_macos_x64
displayName: Download macos x64 packages

- pwsh: |
Get-ChildItem '$(Pipeline.Workspace)/PSPackagesOfficial' -Recurse | Select-Object -ExpandProperty FullName
displayName: 'Capture downloads'

- pwsh: |
$PackagesPath = '$(Pipeline.Workspace)/PSPackagesOfficial'
Write-Verbose -Verbose "Copying Github Release files in $PackagesPath to use in Release Pipeline"

Write-Verbose -Verbose "Creating output directory for GitHub Release files: $(ob_outputDirectory)/GitHubPackages"
New-Item -Path $(ob_outputDirectory)/GitHubPackages -ItemType Directory -Force
Get-ChildItem -Path "$PackagesPath/*" -Recurse |
Where-Object { $_.Extension -notin '.msix', '.nupkg' } |
Where-Object { $_.Extension -in '.gz', '.pkg', '.msi', '.zip', '.deb', '.rpm', '.zip' } |
Copy-Item -Destination $(ob_outputDirectory)/GitHubPackages -Recurse -Verbose

Write-Verbose -Verbose "Creating output directory for NuGet packages: $(ob_outputDirectory)/NuGetPackages"
New-Item -Path $(ob_outputDirectory)/NuGetPackages -ItemType Directory -Force
Get-ChildItem -Path "$PackagesPath/*" -Recurse |
Where-Object { $_.Extension -eq '.nupkg' } |
Copy-Item -Destination $(ob_outputDirectory)/NuGetPackages -Recurse -Verbose
displayName: Copy downloads to Artifacts
Loading