如何在Azure Pipelines多模板作业间添加手动审批步骤?
解决Azure Pipelines YAML在模板间添加手动审批的问题
错误原因
你之前添加- task: ManualValidation@8时出现Unexpected value 'task'错误,是因为ManualValidation是任务(task),只能放在某个job的steps节点下,不能直接作为jobs列表的子项。
简便实现方案(无需重写原有模板)
方案1:新增审批模板,在job模板间插入
这种方式不需要修改原有的build.yml,只需新增一个审批模板,然后在主YAML的jobs列表中插入即可。
- 创建审批模板文件
jobs/approval.yml:
jobs: - job: Approval pool: server # 手动审批任务必须使用server代理池(无代理执行) steps: - task: ManualValidation@8 inputs: instructions: '请确认前序构建完成,是否继续执行后续任务?' # 可选配置:指定需要通知的审批人 # notifyUsers: 'user1@example.com,user2@example.com'
- 修改主YAML文件
azure-pipelines.yml,在各个build模板间插入审批模板:
jobs: - template: jobs/build.yml parameters: name: macOS pool: vmImage: macOS-latest - template: jobs/approval.yml # 插入macOS构建后的审批 - template: jobs/build.yml parameters: name: Linux pool: vmImage: ubuntu-latest - template: jobs/approval.yml # 插入Linux构建后的审批 - template: jobs/build.yml parameters: name: Windows pool: vmImage: windows-latest sign: true
方案2:用Stage层级拆分,添加阶段间审批
如果需要更清晰的阶段划分,可以将每个构建任务放到独立Stage中,然后在Stage之间设置依赖和审批任务:
修改azure-pipelines.yml为Stage结构:
stages: - stage: Build_macOS jobs: - template: jobs/build.yml parameters: name: macOS pool: vmImage: macOS-latest - stage: Approve_macOS jobs: - job: Approval pool: server steps: - task: ManualValidation@8 inputs: instructions: '确认macOS构建完成,是否启动Linux构建?' - stage: Build_Linux dependsOn: Approve_macOS # 依赖前序审批阶段 jobs: - template: jobs/build.yml parameters: name: Linux pool: vmImage: ubuntu-latest - stage: Approve_Linux jobs: - job: Approval pool: server steps: - task: ManualValidation@8 inputs: instructions: '确认Linux构建完成,是否启动Windows构建?' - stage: Build_Windows dependsOn: Approve_Linux jobs: - template: jobs/build.yml parameters: name: Windows pool: vmImage: windows-latest sign: true
关键注意点
- 手动审批任务
ManualValidation@8必须指定pool: server,因为它是无代理任务,不需要虚拟机执行。 - 两种方案都无需修改原有的
build.yml模板,只需要扩展主YAML或新增小模板即可。
内容的提问来源于stack exchange,提问作者mrhelpmeplease
相关产品推荐
相关产品推荐

