Azure DevOps流水线配置Manual Validation任务后未触发审批直接执行部署如何解决
问题根因
你在Prod阶段下定义了两个独立Job:WaitForValidation(包含手动审批任务)和模板展开后的Deploy部署作业。Azure DevOps 流水线中,同一阶段下没有显式配置依赖关系的Job默认会并行执行,因此审批任务还未触发人工操作,部署作业就已经自动启动,和Manual Validation任务的放置位置无关。
修复方案
你只需要给部署作业显式配置依赖关系,要求它必须等审批作业执行成功后再启动即可,修改后的阶段配置如下:
- stage: Prod dependsOn: QA condition: and(succeeded('QA'), eq(variables['Build.SourceBranch'], 'refs/heads/release')) jobs: - job: WaitForValidation pool: server displayName: Wait for approval timeoutInMinutes: 4320 steps: - task: ManualValidation@0 timeoutInMinutes: 1440 # 任务超时时间为1天 inputs: notifyUsers: | one@email.com other@email.com instructions: '请审批生产环境部署申请' # 给模板引用的部署作业添加依赖配置 - template: build-and-deploy-stage.yml parameters: targetEnv: 'Prod' dataset: 'prod' token: $(deploymentTokenProd) dependsOn: WaitForValidation
疑问解答
Manual Validation 并非只能放在阶段末尾才能生效,它可以放置在任意Job的任意步骤位置,只要配置好上下游作业/阶段的依赖关系,就能正常起到暂停流水线、等待人工审批的作用。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

