如果以前的任何任务失败,如何强制 Azure DevOps 管道失败?

时间:2021-07-22 13:50:38

标签: azure-devops azure-pipelines azure-pipelines-yaml azure-pipelines-tasks

我的基于 YAML 的 Azure DevOps 管道包含多个任务,其中 continueOnError: true。我故意这样做是为了我可以运行所有测试套件,即使其中一些测试失败(每个任务运行不同的测试套件)。目前,如果这些任务中的任何一个失败,则构建将被标记为“部分成功”。现在如何强制将构建标记为“失败”?

如果失败,我可以通过在每个任务中设置一个构建变量来手动执行此操作,然后在最后一步检查此变量的值。但是,如果管道中的任何先前步骤失败,强制构建失败的最简单方法是什么?

1 个答案:

答案 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 时失败。