我的基于 YAML 的 Azure DevOps 管道包含多个任务,其中 continueOnError: true
。我故意这样做是为了我可以运行所有测试套件,即使其中一些测试失败(每个任务运行不同的测试套件)。目前,如果这些任务中的任何一个失败,则构建将被标记为“部分成功”。现在如何强制将构建标记为“失败”?
如果失败,我可以通过在每个任务中设置一个构建变量来手动执行此操作,然后在最后一步检查此变量的值。但是,如果管道中的任何先前步骤失败,强制构建失败的最简单方法是什么?
答案 0 :(得分:1)
在每项工作的末尾添加这些任务之一似乎可以解决问题:
- bash: |
echo AGENT_JOBSTATUS = $AGENT_JOBSTATUS
if [[ "$AGENT_JOBSTATUS" == "SucceededWithIssues" ]]; then exit 1; fi
displayName: Fail build if partially successful
echo
行是可选的。有关名为 Agent.JobStatus
的代理变量及其可以采用的值,请参阅 Azure 文档 here。
或者您可以使用 Azure 的内置 conditions 直接检查变量:
- bash: exit 1
displayName: Fail build if partially successful
condition: eq(variables['Agent.JobStatus'], 'SucceededWithIssues')
使 bash 任务返回任何非零值将导致它在满足 condition
时失败。