You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Pipelines多模板作业间添加手动审批步骤?

解决Azure Pipelines YAML在模板间添加手动审批的问题

错误原因

你之前添加- task: ManualValidation@8时出现Unexpected value 'task'错误,是因为ManualValidation是任务(task),只能放在某个job的steps节点下,不能直接作为jobs列表的子项。

简便实现方案(无需重写原有模板)

方案1:新增审批模板,在job模板间插入

这种方式不需要修改原有的build.yml,只需新增一个审批模板,然后在主YAML的jobs列表中插入即可。

  1. 创建审批模板文件jobs/approval.yml:
jobs:
- job: Approval
  pool: server # 手动审批任务必须使用server代理池(无代理执行)
  steps:
  - task: ManualValidation@8
    inputs:
      instructions: '请确认前序构建完成,是否继续执行后续任务?'
      # 可选配置:指定需要通知的审批人
      # notifyUsers: 'user1@example.com,user2@example.com'
  1. 修改主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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:40:07