如何在DevOps发布阶段内跳过手动部署后审批?
可行实现方案
方案1:拆分阶段,提前生成审批记录
- 将原部署阶段拆分为前置审批阶段和实际部署阶段:先创建一个仅包含审批步骤的阶段,配置为进入阶段后立即触发审批(无需等待其他操作),这样审批记录会在实际部署开始前生成。此时可通过
release/approvalsAPI监听该审批记录的创建事件,满足特定条件时自动完成审批,触发后续部署阶段。 - 核心是让审批步骤独立于部署操作,确保审批记录在阶段运行初期就存在,而非阶段结束后生成。
方案2:管道内嵌入查询+审批脚本
- 在部署步骤前添加自定义脚本任务,循环查询当前发布的审批状态,一旦检测到待审批记录(此时记录已生成),立即执行自动审批逻辑。
- 脚本示例(伪代码):
# 循环查询目标阶段的待审批记录 while true; do APPROVAL_ID=$(az devops release approval list --release-id $RELEASE_ID --query "[?status=='pending' && phaseName=='你的部署阶段名称'].id" -o tsv) if [ -n "$APPROVAL_ID" ]; then # 校验自动审批条件(如分支、版本、测试结果等) if [ "$RELEASE_BRANCH" = "production" ] && [ "$TEST_PASS" = "true" ]; then az devops release approval update --approval-id $APPROVAL_ID --status approved --comments "符合条件,自动审批通过" break fi fi sleep 10 done
方案3:事件驱动的自动审批
- 订阅DevOps的发布审批创建事件,当新的审批记录生成时,触发Azure Function或自建服务。在服务中判断是否满足预设条件,若符合则调用
release/approvalsAPI完成审批。 - 这种方式无需修改管道结构,通过事件监听实现跨管道的统一自动审批规则,适合多项目复用场景。
关键注意事项
- 确保调用API的服务主体拥有发布审批管理权限,避免权限不足导致操作失败。
- 自动审批的条件逻辑需严谨,可基于发布分支、版本标签、测试报告结果等维度判断,防止误触发审批。
内容的提问来源于stack exchange,提问作者frummel
相关产品推荐
相关产品推荐

