如果上一步部署条件在yaml中设置为false,请阻止部署

问题描述 投票:0回答:1

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

enter image description here

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

如此处所示,“部署到ua”的条件返回了“ false”。如果“部署到ua”的条件为false,我将如何跳过部署到产品中。

enter image description here

azure-devops yaml azure-pipelines azure-pipelines-release-pipeline
1个回答
0
投票

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

解决此问题的方法是将conditions and dependencies设置为阶段级别,而不是作业级别。对于以下示例:

阶段B取决于版本A,如果阶段A未成功(/跳过),则将跳过该阶段。当条件为假时,将跳过阶段发布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中添加另一个作业,以在条件为false时故意使自身本身失败(以便该阶段将被评估为失败)。

希望以上帮助!

© www.soinside.com 2019 - 2024. All rights reserved.