trigger: none # needed to disable CI trigger and allow manual trigger # when the branch is same as pipline source, the latest build from the source is used. # all environment used are for manual tasks and approvals. resources: pipelines: - pipeline: releasePipeline source: 'Coordinated Packages' trigger: branches: - release/* variables: runCodesignValidationInjection: false stages: - stage: ValidateSDK displayName: Validate SDK dependsOn: [] jobs: - template: templates/release-SDKTests.yml parameters: jobName: WinSDK displayName: Windows SDK Test imageName: windows-latest - template: templates/release-SDKTests.yml parameters: jobName: LinuxSDK displayName: Linux SDK Test imageName: ubuntu-latest - template: templates/release-SDKTests.yml parameters: jobName: macOSSDK displayName: macOS SDK Test imageName: macOS-latest - stage: PRCreation displayName: Create PR in GH Master dependsOn: [] jobs: - deployment: CreatePRInMaster displayName: Update README.md and metadata.json pool: server environment: PSReleaseCreatePR - stage: ValidateGlobalTool displayName: Validate Global Tool dependsOn: [] jobs: - template: templates/release-GlobalToolTest.yml parameters: jobName: WinGblTool displayName: Global Tool Test Windows imageName: windows-latest globalToolExeName: 'pwsh.exe' globalToolPackageName: 'PowerShell.Windows.x64' - template: templates/release-GlobalToolTest.yml parameters: jobName: LinuxWinGblTool displayName: Global Tool Test Linux imageName: ubuntu-latest globalToolExeName: 'pwsh' globalToolPackageName: 'PowerShell.Linux.x64' - stage: ValidatePkgNames dependsOn: [] displayName: Package Names validation jobs: - job: ValidatePkgNames pool: vmImage: windows-latest variables: - group: 'Azure Blob variable group' steps: - template: templates/release-ValidatePackageNames.yml - stage: StartDocker dependsOn: [] displayName: Kick Off Docker Staging build jobs: - deployment: PSDockerKickOff displayName: Start Docker build pool: server environment: PSReleaseDockerKickOff - stage: ManualValidation dependsOn: [] displayName: Manual Validation jobs: - deployment: ValidateWinPkg displayName: Validate Windows Packages pool: server environment: PSReleaseWinPkgValidate - deployment: ValidateLinuxPkg displayName: Validate Linux Packages pool: server environment: PSReleaseLinuxPkgValidate - stage: ReleaseAutomation displayName: Release Automation dependsOn: [] jobs: - deployment: ReleaseAutomationKickOff displayName: Kick off release ReleaseAutomation pool: server environment: PSReleaseAutomationKickOff - stage: GitHubDraftRelease displayName: Create GitHub draft release # do not include stages that are likely to fail in dependency as there is no way to force deploy. dependsOn: - ValidateSDK - PRCreation - ValidatePkgNames - StartDocker - ManualValidation - ReleaseAutomation # The environment here is used for approval. jobs: - deployment: AzureBlobPublic displayName: Make Azure Blob Public pool: vmImage: windows-latest variables: - group: 'Staging_ACR' environment: PSReleaseAzureBlobPublic strategy: runOnce: deploy: steps: - template: templates/release-MakeContainerPublic.yml - job: GitHubDraft displayName: Create GitHub Draft release pool: vmImage: windows-latest variables: - group: 'Azure Blob variable group' - group: 'AzDevOpsArtifacts' dependsOn: AzureBlobPublic steps: - template: templates/release-CreateGitHubDraft.yml - stage: GitHubManualTasks displayName: GitHub manual tasks dependsOn: GitHubDraftRelease jobs: - deployment: UpdateChangeLog displayName: Update Change Log pool : server environment: PSReleaseUpdateChangeLog - deployment: PushTag displayName: Push Git Tag pool : server environment: PSReleasePushTag - deployment: MakeDraftPublic displayName: Make GitHub Draft public pool : server environment: PSReleaseDraftPublic - stage: PublishPackages displayName: Publish packages dependsOn: GitHubManualTasks jobs: - job: PublishNuget pool: vmImage: windows-latest steps: - template: templates/release-ReleaseToNuGet.yml - job: PublishPkgsMsftCom pool: vmImage: ubuntu-latest variables: - group: 'AzDevOpsArtifacts' - group: 'packages.microsoft.com' steps: - template: templates/release-PublishPackageMsftCom.yml - stage: ChangesToMaster displayName: Ensure changes are in GH master dependsOn: PublishPackages jobs: - deployment: MergeToMaster displayName: Make sure changes are in master pool: server environment: PSReleaseChangesToMaster - stage: ReleaseDocker displayName: Release Docker dependsOn: - StartDocker jobs: - deployment: ReleaseDocker displayName: Release Docker pool: server environment: PSReleaseDockerRelease - stage: ReleaseSnap displayName: Release Snap dependsOn: - PublishPackages - ChangesToMaster jobs: - deployment: ReleaseSnap displayName: Release Snap pool: server environment: PSReleaseSnapRelease - stage: UpdateDotnetDocker dependsOn: GitHubManualTasks displayName: Update DotNet SDK Docker images jobs: - deployment: DotnetSDkDocker displayName: Update .NET SDK docker images pool: server environment: PSReleaseUpdateDotnetDocker - stage: BuildInfoJson dependsOn: GitHubManualTasks displayName: Upload BuildInfoJson jobs: - job: UploadJson pool: vmImage: windows-latest variables: - group: 'Azure Blob variable group' steps: - template: templates/release-BuildJson.yml - stage: ReleaseVPack dependsOn: GitHubManualTasks displayName: Release VPack jobs: - deployment: ReleaseVPackManual displayName: Release VPack pool: server environment: PSReleaseVpack - stage: ReleaseDeps dependsOn: GitHubManualTasks displayName: Update pwsh.deps.json links jobs: - template: templates/release-UpdateDepsJson.yml - stage: ReleaseClose displayName: Finish Release dependsOn: - ReleaseVPack - BuildInfoJson - UpdateDotnetDocker - ReleaseDocker - ReleaseSnap - ChangesToMaster - ReleaseDeps jobs: - deployment: RetainBuild displayName: Retain Build pool: server environment: PSReleaseRetainBuild - deployment: DeleteBranch displayName: Delete release branch pool: server environment: PSReleaseDeleteBranch