【问题标题】:In Azure Pipeline YAML, how to make stage run even though a job in previous stage fails, using succeeded('JobName')在 Azure Pipeline YAML 中,即使前一阶段的作业失败,如何使用成功('JobName')使阶段运行
【发布时间】:2023-03-12 23:51:01
【问题描述】:

我试图让我的第二阶段运行,即使第一阶段的两个作业中的一个失败,但我无法使用作业状态检查功能 succeeded('JobName') 使其按预期工作。

在下面的 YAML 管道中,我希望它能够运行 Stage2,即使 Job2 失败,只要 Job1 成功,但它没有:

stages:
  - stage: Stage1
    jobs:
      - job: Job1
        steps:
          - pwsh: echo "Job1"
      - job: Job2
        steps:
          - pwsh: write-error "Job2 error"

  - stage: Stage2
    condition: succeeded('Job1')
    jobs:
      - job: Job3
        steps:
          - pwsh: echo "Job3"

如何让 Stage2 运行,即使 Job2 失败,只要 Job1 成功?

使用always() 将使Stage2 始终运行,但我希望它取决于Job1 的成功状态,而不管Job2状态。

相关文档:

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/stages?view=azure-devops&tabs=yaml#conditions

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#job-status-functions.

【问题讨论】:

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


    【解决方案1】:

    看起来这不可能在下一阶段的阶段级别上处理作业结果。但是,您可以使用此解决方法:

    trigger: none
    
    pool:
      vmImage: ubuntu-latest
    
    stages:
      - stage: Stage1
        jobs:
          - job: Job1
            steps:
              - pwsh: echo "Job1"
          - job: Job2
            steps:
              - pwsh: write-error "Job2 error"
    
      - stage: Stage2
        dependsOn: Stage1
        condition: always()
        jobs:
          - job: Job3
            condition: in(stageDependencies.Stage1.Job1.result, 'Succeeded')
            steps:
              - pwsh: echo "Job3"
          - job: Job4
            condition: in(stageDependencies.Stage1.result, 'Succeeded')
            steps:
              - pwsh: echo "Job4"
    
    

    你有here的文档。

    【讨论】:

    • 这个解决方法不是很漂亮。但确实有效!很高兴能够在 stageDependencies 结果中添加点 - 谢谢 :)
    • 你好 Krzysztof;请问,在条件中使用in function 有什么特别的原因吗?看起来eq function 在这里合适吗?
    • eq 就足够了;)我刚刚修改了我在文档中找到的内容。它只是更快:) 好地方!
    猜你喜欢
    • 2019-09-01
    • 2021-09-08
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多