在Azure DevOps Pipelines(YAML)中通过手动批准跳过阶段

时间:2020-04-29 14:07:03

标签: azure-devops yaml terraform azure-pipelines

对于Terraform部署,我们使用一个Azure DevOps管道,该管道具有3个阶段:

  1. 计划
  2. 申请(手动批准)
  3. 测试

在申请阶段,我们使用具有手动批准(检查)环境的部署作业。如果计划阶段没有任何变化,我们希望“跳过”申请和测试阶段。因此,我们尝试在应用阶段使用以下yaml配置:

temp = a[j]; if (PROCINFO["temp"] == "array")

根据此issue on the MS Developer Community,在批准之前不会检查批准阶段的条件,因此该方法不起作用。

我的问题是:您知道实现此目的的其他方法吗?

2 个答案:

答案 0 :(得分:1)

一个阶段可以包含许多作业,并且每个作业可以消耗多个资源。在开始执行阶段之前,必须满足对该阶段使用的所有资源的所有检查。 Azure管道在每个阶段之前暂停管道的执行,并等待所有挂起的检查完成。这就是为什么这种情况在您的情况下不起作用的原因。在此处查看更多信息:

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/approvals?view=azure-devops&tabs=check-pass

路线图上已有类似的想法,您可以跟踪以下链接:

https://developercommunity.visualstudio.com/idea/697467/manually-triggered-stages-in-yaml-multi-stage-pipe.html

当前,您可以考虑开始a manual run并跳过管道中的几个阶段:

enter image description here

答案 1 :(得分:0)

现在可用:https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/manual-validation?view=azure-devops&tabs=yaml

- task: ManualValidation@0
  timeoutInMinutes: 1440 # task times out in 1 day
  inputs:
    notifyUsers: |
      test@test.com
      example@example.com
    instructions: 'Please validate the build configuration and resume'
    onTimeout: 'resume'

onTimeout 也可以设置为 reject。如果插入,则阶段/作业将处于挂起状态,直到有人进入并查看说明将在屏幕上的位置。将非常接近为手动干预任务提供的课程版本。此任务仅在 YAML 管道中可用。

相关问题