我有一个多阶段的 YAML 管道:
Build Solution
|
▼
Terraform DEV \
| |
▼ |
Deploy Function App | DEV Environment (No Approval Required)
| |
▼ |
Provision API Mgmt /
|
▼
Terraform TEST \
| |
▼ |
Deploy Function App | TEST Environment (Approval Required)
| |
▼ |
Provision API Mgmt /
我配置了两个环境(DEV
和 TEST
),在 TEST
环境中配置了 Approval,Terraform TEST
阶段有一个部署作业配置为使用 { {1}} 环境。这意味着,当管道到达 TEST
阶段时,会向 Terraform TEST
环境的审批者发送一封电子邮件并等待。
当该阶段获得批准后,构建将继续。
TEST
阶段还有一个针对管道那部分环境的部署作业。我的问题是,当它到达 Deploy Function App
环境的 Deploy Function App
时,它再次请求批准部署到 TEST
环境。
我的问题是:这是固定行为吗?即,无论何时在获得批准的环境中进行部署时,都需要新的批准吗?或者有没有办法改变它,这样一个管道只需要一个批准就可以部署(根据需要多次)到特定环境?
答案 0 :(得分:1)
这是设计使然。如果回滚对先前管道运行的更改,则最好在将代码重新部署到环境之前获得批准。至于您有 3 个阶段且每个阶段都需要一个 approval this is by design 的场景:
<块引用>一个阶段可以包含多个作业,每个作业可以消耗多个资源。在开始执行阶段之前,必须满足对该阶段使用的所有资源的所有检查。 Azure Pipelines 在每个阶段之前暂停管道的执行,并等待所有挂起的检查完成。检查是根据每次检查中指定的重试间隔重新评估。如果在指定的超时之前所有检查都没有成功,则不会执行该阶段。如果任何检查最终失败(例如,如果您拒绝对其中一个资源的批准),则不会执行该阶段。
在您给定的场景中,我可以建议 Terraform、函数应用和 APIM 部署属于同一阶段吗?这些 jobs could also be templatized 中的每一个都可以在您的其他环境中重复使用。这将消除用户错误批准这些内容的可能性(除非您已概述了dependsOn)或 Terraform Apply 是唯一发布的可能性。