防止在 PR 更改时取消部署作业
Prevent Cancellation of Deployment Job on PR Changes
我们有一个 Azure DevOps YAML 多阶段管道,代码在其中构建,然后部署到一系列环境中。使用 Terraform 实现部署。
即
Builds -> Test -> Deploy to DEV -> Deploy to TEST - - ->
此管道用于 CI/CD 构建和 PR 构建。对于 PR 构建,部署阶段的唯一部分是在 TF 脚本上 运行ning terraform plan
。
对于 PR,管道配置为在将更改推送到该 PR 时取消正在进行的构建。
我们看到的问题是,当将更改推送到 PR 并取消正在进行的构建时,有时会在 terraform plan
步骤中发生取消。这有时意味着 terraform plan
占用的 blob 租约未释放。从那时起,需要手动干预(中断 blob 租约)才能使部署阶段成功 运行。
我相信我们可以关闭设置,如果推送更改,该设置会导致正在进行的 PR 构建被取消。
但我想知道是否有一种方法可以将管道步骤标记为关键 - 即如果取消构建,它应该 运行 完成?
还有其他方法可以取消管道构建,并且必须有其他 tasks/steps 不应中途取消的方法。这样的 critical-task
设置也将涵盖这些情况。
恐怕您仅使用 YAML 无法实现此目的。你能做的将需要一些额外的努力(在某些情况下相当大):
- 将 terraform 脚本替换为 bicep 以防万一 - 对我来说语法智商非常相似,你在这里得到的是缺少 terrafrom 状态
- 在你的第一步中添加一个检查你的状态是否被锁定并在需要时解除租约
我知道您希望听到比这更好的消息,但目前无法将任务标记为不可取消。然而,这听起来像是一个很酷的功能和功能请求的候选。
我们有一个 Azure DevOps YAML 多阶段管道,代码在其中构建,然后部署到一系列环境中。使用 Terraform 实现部署。
即
Builds -> Test -> Deploy to DEV -> Deploy to TEST - - ->
此管道用于 CI/CD 构建和 PR 构建。对于 PR 构建,部署阶段的唯一部分是在 TF 脚本上 运行ning terraform plan
。
对于 PR,管道配置为在将更改推送到该 PR 时取消正在进行的构建。
我们看到的问题是,当将更改推送到 PR 并取消正在进行的构建时,有时会在 terraform plan
步骤中发生取消。这有时意味着 terraform plan
占用的 blob 租约未释放。从那时起,需要手动干预(中断 blob 租约)才能使部署阶段成功 运行。
我相信我们可以关闭设置,如果推送更改,该设置会导致正在进行的 PR 构建被取消。
但我想知道是否有一种方法可以将管道步骤标记为关键 - 即如果取消构建,它应该 运行 完成?
还有其他方法可以取消管道构建,并且必须有其他 tasks/steps 不应中途取消的方法。这样的 critical-task
设置也将涵盖这些情况。
恐怕您仅使用 YAML 无法实现此目的。你能做的将需要一些额外的努力(在某些情况下相当大):
- 将 terraform 脚本替换为 bicep 以防万一 - 对我来说语法智商非常相似,你在这里得到的是缺少 terrafrom 状态
- 在你的第一步中添加一个检查你的状态是否被锁定并在需要时解除租约
我知道您希望听到比这更好的消息,但目前无法将任务标记为不可取消。然而,这听起来像是一个很酷的功能和功能请求的候选。