【问题标题】:Prevent deployment if previous stage deployment condition is set to false in yaml如果前阶段部署条件在 yaml 中设置为 false,则阻止部署
【发布时间】:2020-04-06 17:27:08
【问题描述】:

我使用 yaml 创建了一个构建/发布管道:

在这里,第一阶段是“构建”。构建完成并成功后,下一阶段是“部署到 ua”。如果部署到 ua 完成并成功,下一阶段是“部署到产品”。

如此处所示,“部署到 ua”的条件返回“假”。如果“部署到 ua”的条件为假,我将如何跳过部署到 prod。

【问题讨论】:

  • 如果条件是false,那么这个阶段会失败而不是跳过吗?
  • 正确。如果上一次部署中的条件为假,则跳过下一次部署。

标签: azure-devops yaml azure-pipelines azure-pipelines-release-pipeline


【解决方案1】:

当我在阶段deployment to ua 中设置工作条件时,我复制了上述场景。由于条件为假,作业“Deploy Resources-Ip”将被跳过。但阶段 deployment to ua 评估成功。下一阶段将继续运行。

解决此问题的方法是将conditions and dependencies 设置在阶段级别而不是作业级别。下面的例子:

Stage Release B 依赖于 Release A,当 Stage Release A 不成功时将被跳过(/skipped)。当条件为假时,将跳过阶段发布 A(如果条件设置在作业级别,则跳过作业 B)。

stages: 
- stage: Build
  jobs:
  - job: A
    steps:
      - powershell: echo "Stage A"

- stage: Release_A
  dependsOn: Build
  condition: and(succeeded('Build'), eq(variables['build.sourceBranch'], 'refs/heads/master'))
  jobs:
  - job: B
    steps:
      - powershell: echo "Stage B"

- stage: Release_B
  dependsOn: Release_A
  condition: succeeded('Release_A')
  jobs:
  - job: C
    steps:
      - powershell: echo "Stage C"

但是,如果您想在作业级别设置条件。当条件为假时,您需要在阶段deployment to ua 中添加另一个作业以故意使自身失败(以便该阶段将被评估为失败)。

希望以上有所帮助!

【讨论】:

    猜你喜欢
    • 2023-02-16
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2020-04-07
    相关资源
    最近更新 更多