|
| 1 | +trigger: none |
| 2 | + |
| 3 | +# needed to disable CI trigger and allow manual trigger |
| 4 | +# when the branch is same as pipline source, the latest build from the source is used. |
| 5 | +# all environment used are for manual tasks and approvals. |
| 6 | + |
| 7 | +resources: |
| 8 | + pipelines: |
| 9 | + - pipeline: releasePipeline |
| 10 | + source: 'Coordinated Packages' |
| 11 | + trigger: |
| 12 | + branches: |
| 13 | + - release/* |
| 14 | + |
| 15 | +variables: |
| 16 | + runCodesignValidationInjection: false |
| 17 | + |
| 18 | +stages: |
| 19 | +- stage: ValidateSDK |
| 20 | + displayName: Validate SDK |
| 21 | + dependsOn: [] |
| 22 | + jobs: |
| 23 | + - template: templates/release-SDKTests.yml |
| 24 | + parameters: |
| 25 | + jobName: WinSDK |
| 26 | + displayName: Windows SDK Test |
| 27 | + imageName: windows-latest |
| 28 | + |
| 29 | + - template: templates/release-SDKTests.yml |
| 30 | + parameters: |
| 31 | + jobName: LinuxSDK |
| 32 | + displayName: Linux SDK Test |
| 33 | + imageName: ubuntu-latest |
| 34 | + |
| 35 | + - template: templates/release-SDKTests.yml |
| 36 | + parameters: |
| 37 | + jobName: macOSSDK |
| 38 | + displayName: macOS SDK Test |
| 39 | + imageName: macOS-latest |
| 40 | + |
| 41 | +- stage: PRCreation |
| 42 | + displayName: Create PR in GH Master |
| 43 | + dependsOn: [] |
| 44 | + jobs: |
| 45 | + - deployment: CreatePRInMaster |
| 46 | + displayName: Update README.md and metadata.json |
| 47 | + pool: server |
| 48 | + environment: PSReleaseCreatePR |
| 49 | + |
| 50 | +- stage: ValidateGlobalTool |
| 51 | + displayName: Validate Global Tool |
| 52 | + dependsOn: [] |
| 53 | + jobs: |
| 54 | + - template: templates/release-GlobalToolTest.yml |
| 55 | + parameters: |
| 56 | + jobName: WinGblTool |
| 57 | + displayName: Global Tool Test Windows |
| 58 | + imageName: windows-latest |
| 59 | + globalToolExeName: 'pwsh.exe' |
| 60 | + globalToolPackageName: 'PowerShell.Windows.x64' |
| 61 | + |
| 62 | + - template: templates/release-GlobalToolTest.yml |
| 63 | + parameters: |
| 64 | + jobName: LinuxWinGblTool |
| 65 | + displayName: Global Tool Test Linux |
| 66 | + imageName: ubuntu-latest |
| 67 | + globalToolExeName: 'pwsh' |
| 68 | + globalToolPackageName: 'PowerShell.Linux.x64' |
| 69 | + |
| 70 | +- stage: ValidatePkgNames |
| 71 | + dependsOn: [] |
| 72 | + displayName: Package Names validation |
| 73 | + jobs: |
| 74 | + - job: ValidatePkgNames |
| 75 | + pool: |
| 76 | + vmImage: windows-latest |
| 77 | + variables: |
| 78 | + - group: 'Azure Blob variable group' |
| 79 | + steps: |
| 80 | + - template: templates/release-ValidatePackageNames.yml |
| 81 | + |
| 82 | +- stage: StartDocker |
| 83 | + dependsOn: [] |
| 84 | + displayName: Kick Off Docker Staging build |
| 85 | + jobs: |
| 86 | + - deployment: PSDockerKickOff |
| 87 | + displayName: Start Docker build |
| 88 | + pool: server |
| 89 | + environment: PSReleaseDockerKickOff |
| 90 | + |
| 91 | +- stage: ManualValidation |
| 92 | + dependsOn: [] |
| 93 | + displayName: Manual Validation |
| 94 | + jobs: |
| 95 | + - deployment: ValidateWinPkg |
| 96 | + displayName: Validate Windows Packages |
| 97 | + pool: server |
| 98 | + environment: PSReleaseWinPkgValidate |
| 99 | + |
| 100 | + - deployment: ValidateLinuxPkg |
| 101 | + displayName: Validate Linux Packages |
| 102 | + pool: server |
| 103 | + environment: PSReleaseLinuxPkgValidate |
| 104 | + |
| 105 | +- stage: ReleaseAutomation |
| 106 | + displayName: Release Automation |
| 107 | + dependsOn: [] |
| 108 | + jobs: |
| 109 | + - deployment: ReleaseAutomationKickOff |
| 110 | + displayName: Kick off release ReleaseAutomation |
| 111 | + pool: server |
| 112 | + environment: PSReleaseAutomationKickOff |
| 113 | + |
| 114 | +- stage: GitHubDraftRelease |
| 115 | + displayName: Create GitHub draft release |
| 116 | + # do not include stages that are likely to fail in dependency as there is no way to force deploy. |
| 117 | + dependsOn: |
| 118 | + - ValidateSDK |
| 119 | + - PRCreation |
| 120 | + - ValidatePkgNames |
| 121 | + - StartDocker |
| 122 | + - ManualValidation |
| 123 | + - ReleaseAutomation |
| 124 | + |
| 125 | +# The environment here is used for approval. |
| 126 | + jobs: |
| 127 | + - deployment: AzureBlobPublic |
| 128 | + displayName: Make Azure Blob Public |
| 129 | + pool: |
| 130 | + vmImage: windows-latest |
| 131 | + variables: |
| 132 | + - group: 'ACR' |
| 133 | + environment: PSReleaseAzureBlobPublic |
| 134 | + strategy: |
| 135 | + runOnce: |
| 136 | + deploy: |
| 137 | + steps: |
| 138 | + - template: templates/release-MakeContainerPublic.yml |
| 139 | + |
| 140 | + - job: GitHubDraft |
| 141 | + displayName: Create GitHub Draft release |
| 142 | + pool: |
| 143 | + vmImage: windows-latest |
| 144 | + variables: |
| 145 | + - group: 'Azure Blob variable group' |
| 146 | + - group: 'AzDevOpsArtifacts' |
| 147 | + dependsOn: AzureBlobPublic |
| 148 | + steps: |
| 149 | + - template: templates/release-CreateGitHubDraft.yml |
| 150 | + |
| 151 | +- stage: GitHubManualTasks |
| 152 | + displayName: GitHub manual tasks |
| 153 | + dependsOn: GitHubDraftRelease |
| 154 | + jobs: |
| 155 | + - deployment: UpdateChangeLog |
| 156 | + displayName: Update Change Log |
| 157 | + pool : server |
| 158 | + environment: PSReleaseUpdateChangeLog |
| 159 | + |
| 160 | + - deployment: PushTag |
| 161 | + displayName: Push Git Tag |
| 162 | + pool : server |
| 163 | + environment: PSReleasePushTag |
| 164 | + |
| 165 | + - deployment: MakeDraftPublic |
| 166 | + displayName: Make GitHub Draft public |
| 167 | + pool : server |
| 168 | + environment: PSReleaseDraftPublic |
| 169 | + |
| 170 | +- stage: PublishPackages |
| 171 | + displayName: Publish packages |
| 172 | + dependsOn: GitHubManualTasks |
| 173 | + jobs: |
| 174 | + - job: PublishNuget |
| 175 | + pool: |
| 176 | + vmImage: windows-latest |
| 177 | + steps: |
| 178 | + - template: templates/release-ReleaseToNuGet.yml |
| 179 | + |
| 180 | + - job: PublishPkgsMsftCom |
| 181 | + pool: |
| 182 | + vmImage: ubuntu-latest |
| 183 | + variables: |
| 184 | + - group: 'AzDevOpsArtifacts' |
| 185 | + - group: 'packages.microsoft.com' |
| 186 | + steps: |
| 187 | + - template: templates/release-PublishPackageMsftCom.yml |
| 188 | + |
| 189 | +- stage: ChangesToMaster |
| 190 | + displayName: Ensure changes are in GH master |
| 191 | + dependsOn: PublishPackages |
| 192 | + jobs: |
| 193 | + - deployment: MergeToMaster |
| 194 | + displayName: Make sure changes are in master |
| 195 | + pool: server |
| 196 | + environment: PSReleaseChangesToMaster |
| 197 | + |
| 198 | +- stage: ReleaseDocker |
| 199 | + displayName: Release Docker |
| 200 | + dependsOn: |
| 201 | + - StartDocker |
| 202 | + jobs: |
| 203 | + - deployment: ReleaseDocker |
| 204 | + displayName: Release Docker |
| 205 | + pool: server |
| 206 | + environment: PSReleaseDockerRelease |
| 207 | + |
| 208 | +- stage: ReleaseSnap |
| 209 | + displayName: Release Snap |
| 210 | + dependsOn: |
| 211 | + - PublishPackages |
| 212 | + - ChangesToMaster |
| 213 | + jobs: |
| 214 | + - deployment: ReleaseSnap |
| 215 | + displayName: Release Snap |
| 216 | + pool: server |
| 217 | + environment: PSReleaseSnapRelease |
| 218 | + |
| 219 | +- stage: UpdateDotnetDocker |
| 220 | + dependsOn: GitHubManualTasks |
| 221 | + displayName: Update DotNet SDK Docker images |
| 222 | + jobs: |
| 223 | + - deployment: DotnetSDkDocker |
| 224 | + displayName: Update .NET SDK docker images |
| 225 | + pool: server |
| 226 | + environment: PSReleaseUpdateDotnetDocker |
| 227 | + |
| 228 | +- stage: BuildInfoJson |
| 229 | + dependsOn: GitHubManualTasks |
| 230 | + displayName: Upload BuildInfoJson |
| 231 | + jobs: |
| 232 | + - job: UploadJson |
| 233 | + pool: |
| 234 | + vmImage: windows-latest |
| 235 | + variables: |
| 236 | + - group: 'Azure Blob variable group' |
| 237 | + steps: |
| 238 | + - template: templates/release-BuildJson.yml |
| 239 | + |
| 240 | +- stage: ReleaseVPack |
| 241 | + dependsOn: GitHubManualTasks |
| 242 | + displayName: Release VPack |
| 243 | + jobs: |
| 244 | + - deployment: ReleaseVPackManual |
| 245 | + displayName: Release VPack |
| 246 | + pool: server |
| 247 | + environment: PSReleaseVpack |
| 248 | + |
| 249 | +- stage: ReleaseDeps |
| 250 | + dependsOn: GitHubManualTasks |
| 251 | + displayName: Update pwsh.deps.json links |
| 252 | + jobs: |
| 253 | + - template: templates/release-UpdateDepsJson.yml |
| 254 | + |
| 255 | +- stage: ReleaseClose |
| 256 | + displayName: Finish Release |
| 257 | + dependsOn: |
| 258 | + - ReleaseVPack |
| 259 | + - BuildInfoJson |
| 260 | + - UpdateDotnetDocker |
| 261 | + - ReleaseDocker |
| 262 | + - ReleaseSnap |
| 263 | + - ChangesToMaster |
| 264 | + - ReleaseDeps |
| 265 | + jobs: |
| 266 | + - deployment: RetainBuild |
| 267 | + displayName: Retain Build |
| 268 | + pool: server |
| 269 | + environment: PSReleaseRetainBuild |
| 270 | + |
| 271 | + - deployment: DeleteBranch |
| 272 | + displayName: Delete release branch |
| 273 | + pool: server |
| 274 | + environment: PSReleaseDeleteBranch |
0 commit comments