1

我们有一个 Azure DevOps YAML 多阶段管道,在该管道中构建代码,然后将其部署到一系列环境中。部署是使用 Terraform 实现的。

IE

Builds -> Test -> Deploy to DEV -> Deploy to TEST - - ->

此管道用于 CI/CD 构建和 PR 构建。对于 PR 构建,部署阶段的唯一部分是terraform plan在 TF 脚本上运行。

对于 PR,管道配置为在将更改推送到该 PR 时取消正在进行的构建。

我们看到的问题是,当更改被推送到 PR 并且正在进行的构建被取消时,有时会在terraform plan步骤期间发生取消。这有时意味着terraform plan不会释放所占用的 blob 租约。从那时起,需要手动干预(中断 blob 租约)才能使部署阶段成功运行。

我相信我们可以关闭如果推送更改会导致正在进行的 PR 构建被取消的设置。

但我想知道是否有一种方法可以将管道步骤标记为关键步骤 - 即如果取消构建,它应该运行到完成?

还有其他取消管道构建的方法,并且必须有其他不应中途取消的任务/步骤。这样的critical-task设置也将涵盖这些情况。

4

1 回答 1

1

恐怕您无法仅使用 YAML 来实现这一点。你能做的将需要一些额外的努力(在某些情况下相当大):

  • 将 terraform 脚本替换为 bicep 来代替 - 对我来说,语法 iq 非常相似,而你在这里得到的是缺乏 terrafrom 状态
  • 在您的第一步中添加检查您的状态是否已锁定并在需要时终止租约

我了解您希望听到比这更好的内容,但目前无法将任务标记为不可取消。然而,这听起来像是一个很酷的特性和特性请求的候选者。

于 2021-06-16T12:52:47.883 回答