EdH*_*EdH 4 continuous-integration continuous-deployment azure-devops multistage-pipeline
我有一个 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.
...
Run Code Online (Sandbox Code Playgroud)
如何跳过一个阶段而不是下一个阶段?
Tul*_*lly 18
归功于https://github.com/MicrosoftDocs/azure-devops-docs/issues/7738#issuecomment-611815486
@EdH
condition: not(or(failed(), canceled()))
Run Code Online (Sandbox Code Playgroud)
可与多个先前阶段配合使用,并按您的需要工作。succeeded如果之前的所有阶段都是or ,则运行该阶段skipped,但如果它们都是failedor则不运行cancelled。
笔记:
您可以使用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.
...
Run Code Online (Sandbox Code Playgroud)
我测试过并且有效,请查看下面的屏幕截图。
我正在寻找类似的信息,发现您可以对依赖结果执行“IN”子句。在Microsoft Docs中找到了有关表达式的内容
- job: c
dependsOn:
- a
- b
condition: |
and
(
in(dependencies.a.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
in(dependencies.b.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3414 次 |
| 最近记录: |