我有一些工作的管道(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
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:是。
答案 0 :(得分:2)
工作失败时,Azure Devops管道会完成并带有警告标记
感谢您的评论和示例,这使我发现了此问题的原因:
属性 continueOnError
。 此行为是设计使然的,不是错误。目前尚无修复方法。
如果我们设置continueOnError: true
,则即使该作业失败,也将使将来的作业运行。为了实现它,Azure Devops将使用“欺骗性方式” 将错误视为警告,以便该错误不会阻止构建。那就是作业失败的原因,但是管道将其显示为警告。
我们甚至可以在非YAML任务中使用控制选项Continue on error
重现此问题:
此外,它不会影响PR的完成。
要解决此问题,您可以在YAML中对其进行评论。如果您有必要,可以为以后的工作设置condition: always()
:
jobs:
- job: ${{ parameters.name }}
dependsOn: FirstJob
variables:
BuildTag: ${{ parameters.name }}
steps:
...
- job: Second
condition: always()
- job: Third
condition: always()
希望这会有所帮助。