我使用yaml创建了构建/发布管道:
这里,第一阶段是“构建”。构建完成并成功完成后,下一步就是“部署到ua”。如果成功部署到ua,则下一步是“部署到产品”。
如此处所示,“部署到ua”的条件返回了“ false”。如果“部署到ua”的条件为false,我将如何跳过部署到产品中。
我重现了以上场景,当我在阶段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时故意使自身本身失败(以便该阶段将被评估为失败)。
希望以上帮助!