我有一个Azure多级CI/CD管道。它有测试和UAT部署的阶段。
如果测试成功或被跳过,我希望UAT发行版运行,但如果失败,则不运行。
我不能。无论我尝试什么,如果跳过测试,UAT也会被跳过。除非我使用always(),但是即使测试失败,UAT也会运行。
...
- stage: Test
condition: and(succeeded(), ne(variables['build.sourceBranchName'], 'DoUAT')) # Skip for UAT deployment tests
...
- stage: UAT
condition: and(succeeded(), in(variables['build.sourceBranchName'], 'master', 'DoUAT')) # Only deploy off master branch and branch to test UAT deploys.
...我如何跳过一个阶段而不是下一个阶段?

发布于 2020-02-14 09:06:24
您可以使用not(failed('Test'))条件,请尝试以下条件。
- stage: UAT
condition: and(not(failed('Test')), in(variables['build.sourceBranchName'], 'master', DoUAT')) # Only deploy off master branch and branch to test UAT deploys.
...我做了测试,结果成功了,看下面的截图。

发布于 2020-08-15 21:18:29
我正在寻找类似的信息,并发现您可以对依赖结果执行"IN“子句。在关于表达式的Microsoft中找到了这个
- job: c
dependsOn:
- a
- b
condition: |
and
(
in(dependencies.a.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
in(dependencies.b.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
)发布于 2022-03-16 05:18:28
贷给https://github.com/MicrosoftDocs/azure-devops-docs/issues/7738#issuecomment-611815486
@EdH
condition: not(or(failed(), canceled()))与多个前期阶段一起工作,并根据您的需要工作。如果以前的所有阶段都是succeeded或skipped,则运行这个阶段,但如果它们是failed或cancelled,则不运行。

备注:
https://stackoverflow.com/questions/60218455
复制相似问题