如何更改DevOps Pipeline中Approvals and checks的默认行为
Azure Pipelines审批检查超时后全步骤跳过的配置调整方案
默认配置下,绑定在环境/服务连接上的「Approvals and checks」(包括你配置的Azure Functions自定义检查)触发超时后,系统会直接将当前关联的部署阶段标记为Failed状态,而Pipeline默认的执行规则是前序依赖阶段失败时,自动跳过所有后续关联阶段,这就是超时后所有后续步骤被直接跳过的核心原因。
可按以下步骤调整配置,实现超时后触发团队通知、不直接跳过指定后续流程的效果:
- 拆分阶段职责,不要把通知逻辑和强依赖审批通过的部署流程放在同一个依赖链的成功判定分支里
把通知开发团队、触发人工介入工单这类兜底逻辑,和实际需要审批通过才能执行的部署步骤拆成独立阶段,不要共用同一个成功条件。 - 为异常触发的流程配置独立运行条件
找到负责发送通知、触发告警的任务/阶段,将默认的「仅当前序所有任务成功时运行」规则改为自定义条件:- 仅需要在审批超时/失败时触发通知,就给对应阶段/任务设置条件
condition: failed('PreDeployCheck'),其中PreDeployCheck是你配置了审批检查的前置阶段名 - 如果需要该步骤无论前置阶段成功、失败、超时都执行,直接设置
condition: always()即可
对应的YAML配置参考示例:
stages: # 绑定了Approvals and checks的前置检查阶段 - stage: PreDeployValidate jobs: - deployment: RunChecks environment: prod-env # 该环境已配置Azure Functions检查、审批规则 strategy: runOnce: deploy: steps: - script: echo "All pre-deploy checks passed" # 超时/检查失败时触发的通知阶段 - stage: AlertDevTeam dependsOn: PreDeployValidate condition: failed() jobs: - job: SendNotification steps: - task: MicrosoftTeamsPostMessage@1 # 替换为你实际使用的通知组件 inputs: webhookUrl: $(TeamsWebhook) message: "预部署环境检查已超时,请开发团队及时介入处理" # 仅检查通过才会执行的实际部署阶段 - stage: DeployToProd dependsOn: PreDeployValidate condition: succeeded() jobs: - deployment: DeployService environment: prod-env strategy: runOnce: deploy: steps: - script: echo "Start production deployment" - 仅需要在审批超时/失败时触发通知,就给对应阶段/任务设置条件
- 可选调整检查本身的超时规则
进入对应环境的「Approvals and checks」配置列表,找到你添加的Azure Functions检查项,在编辑面板的高级设置中,可以根据实际需求调整「Maximum wait time for check completion」(检查最长等待时长)参数,也可以将超时后的默认动作从直接拒绝部署,调整为标记检查失败但允许其他检查完成,避免单点检查超时直接打挂整个检查流程。
注意:不要直接关闭Pipeline全局的「前序失败跳过后续步骤」配置,否则正常的构建错误、部署故障也会继续执行后续流程,带来线上风险。仅给需要在异常场景执行的通知、兜底步骤单独配置运行条件即可。
内容的提问来源于stack exchange,提问作者Bennimi
相关产品推荐
相关产品推荐

