作业失败时,Azure Devops管道完成并带有警告标记

时间:2020-04-08 12:56:52

标签: azure-devops yaml

我有一些工作的管道(Azure Devops yaml)。 它们并行运行。 但是当失败时,构建会以警告而非错误标记结束。 为什么? 我希望管道会以错误结束。

enter image description here

编辑: 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

template.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'))

我看到我的错误,原因是 continueOnError:是

1 个答案:

答案 0 :(得分:2)

工作失败时,Azure Devops管道会完成并带有警告标记

感谢您的评论和示例,这使我发现了此问题的原因:

属性 continueOnError 此行为是设计使然的,不是错误。目前尚无修复方法。

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

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

enter image description here

enter image description here

此外,它不会影响PR的完成。

要解决此问题,您可以在YAML中对其进行评论。如果您有必要,可以为以后的工作设置condition: always()

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

  steps:
   ...

- job: Second
  condition: always()

- job: Third
  condition: always()

希望这会有所帮助。