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
29 changes: 25 additions & 4 deletions tools/releaseBuild/azureDevOps/releasePipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -244,11 +244,32 @@ stages:
dependsOn:
- PublishPackages
- ChangesToMaster
variables:
# adds newPwshOrgName (exists in new and old org)
- group: PowerShellRelease
jobs:
- deployment: ReleaseSnap
displayName: Release Snap
pool: server
environment: PSReleaseSnapRelease
- template: templates/release/approvalJob.yml
parameters:
displayName: Start the release build
instructions: |
Start the snap pipeline at: https://dev.azure.com/$(newPwshOrgName)/PowerShell/_build?definitionId=49&_a=summary
- template: templates/release/approvalJob.yml
parameters:
displayName: Approve the release
instructions: |
Once the build is finished, approve the release of all channels.

- stage: ReleaseToMU
displayName: Release to MU
dependsOn:
- PublishPackages
- ChangesToMaster
jobs:
- template: templates/release/approvalJob.yml
parameters:
displayName: Release to MU
instructions: |
Notify the PM team to start the process of releasing to MU.

- stage: UpdateDotnetDocker
dependsOn: GitHubManualTasks
Expand Down
31 changes: 31 additions & 0 deletions tools/releaseBuild/azureDevOps/templates/release/approvalJob.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
parameters:
- name: displayName
type: string
- name: instructions
type: string
- name: jobName
type: string
default: approval
- name: timeoutInMinutes
type: number
# 2 days
default: 2880
- name: onTimeout
type: string
default: 'reject'
values:
- resume
- reject

jobs:
- job: ${{ parameters.jobName }}
displayName: ${{ parameters.displayName }}
pool: server
timeoutInMinutes: 4320 # job times out in 3 days
steps:
- task: ManualValidation@0
displayName: ${{ parameters.displayName }}
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
inputs:
instructions: ${{ parameters.instructions }}
onTimeout: ${{ parameters.onTimeout }}