当作业失败时,Azure DevOps 管道完成时会显示警告标志

Nuz*_*Nuz 6 yaml azure-devops

我有一个包含一些作业的管道(Azure Devops yaml)。它们并行运行。但是,当失败时,构建会以警告结束,而不是错误标志。为什么?我预计管道会以错误结束。

在此输入图像描述

编辑: pipelines.yml

pool:
  name: Default


jobs:
- job: FirstJob
  steps:
  - script: echo First!

- template: template.yml
  parameters:
     name: Second

- template: template.yml
  parameters:
     name: Third

- template: template.yml
  parameters:
     name: Fourth

- template: template.yml
  parameters:
     name: Fifth

- template: template.yml
  parameters:
     name: Sixth

- template: template.yml
  parameters:
     name: Seventh
Run Code Online (Sandbox Code Playgroud)

模板.yml:

parameters:
  - name: name
    type: string
    default: -- 

jobs:
- job: ${{ parameters.name }}
  dependsOn: FirstJob
  continueOnError: true
  variables:
      BuildTag: ${{ parameters.name }}

  steps:
    - task : AddTag@0
      inputs:
        tags: '$(BuildTag)'

    - task: DotNetCoreCLI@2
      inputs:
        command: 'build'
        projects: 'foo'
      condition: and(succeeded(), eq(variables['BuildTag'], 'Sixth'))
Run Code Online (Sandbox Code Playgroud)

我看到了continueOnError: true的错误。

Leo*_*SFT 11

当作业失败时,Azure DevOps 管道完成时会显示警告标志

感谢您的评论和示例,这让我找到了这个问题的原因:

财产continueOnError此行为是设计使然,不是错误。目前没有办法修复。

如果我们设置continueOnError: true,这将使未来的作业即使该作业失败也应该运行。为了实现它,Azure Devops会使用一种“欺骗性的方式”将错误视为警告,从而使错误不会阻止构建。这就是作业失败的原因,但管道将其显示为警告。

我们甚至可以Continue on error在非 YAML 任务中使用控制选项重现此问题:

在此输入图像描述

在此输入图像描述

此外,并不影响PR的完成。

要解决此问题,您可以在 YAML 中对其进行注释。如果您有需要,您可以condition: always()为未来的工作设置:

jobs:
- job: ${{ parameters.name }}
  dependsOn: FirstJob
  variables:
      BuildTag: ${{ parameters.name }}

  steps:
   ...

- job: Second
  condition: always()

- job: Third
  condition: always()
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。