我有一个包含一些作业的管道(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)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
14952 次 |
| 最近记录: |