Azure devops 多阶段 YAML 结合人工交互

Azure devops multi-stage YAML combined with manual interaction

我刚刚读到 multi-stage pipelines 听起来很棒。

据我了解,阶段运行一个接一个,现在假设我有以下阶段

stages:
   stage: Deploy to acc
      ...
   stage: Deploy to prd

我不想 运行 在部署到 acc 之后立即进行生产部署。首先,我想查看 acc,当我批准后,它应该部署到 prd。多阶段流水线中是否有一种方法可以告诉您不要自动 运行 一个阶段?例如 运行 手动一个阶段?或者我应该为生产创建一个新的管道吗?

要防止阶段自动 运行,您可以为每个阶段添加条件。检查 here 了解更多信息

stages:
- stage: A
  #stage B runs if A fails
- stage: B
  condition: failed()
 #stage C runs if B succeeds
- stage: C
  dependsOn:
  - A
  - B
  condition: succeeded('B')

如果您想 运行 手动设置一个阶段。您可以为 environments 创建 checks。 按照以下步骤创建舞台目标环境。

导航到管道页面。然后选择环境并单击创建环境。 有关详细信息,请查看 here

然后按照说明 here 为每个环境创建检查。这样,在您的管道阶段开始部署到定义了 checks 的环境之前。它将等待批准。

建议使用发布管道部署您的应用。您可以在项目的 Releases 页面中创建发布管道。创建 approvalsgates 以手动干预您的部署任务在发布管道中非常简单。 检查 here 了解详细步骤

仅供参考,每个阶段结束时的手动验证任务也无法完成:

现在可用: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'