如何在 yaml 中处理 Azure DevOps 管道中的错误?

在 Azure DevOps 中,我在 yaml 文件中有一些管道,它们在 Terraform 和 PowerShell 中执行任务以在 Azure 中部署基础设施。

如果在部署过程中出现错误,我想触发默认操作(例如打印默认错误消息或删除某些内容等),无论错误来自 Terraform 脚本还是 PowerShell。

我认为 Yaml 文件可以处理这个动作,但是怎么做呢?

stack overflow How to handle errors in Azure DevOps pipelines in yaml?
原文答案
author avatar

接受的答案

您可以通过在部署作业结束时添加一个带有特殊条件的任务来执行此操作,以确保它仅在管道失败时运行; the docs explain the use of these kinds of condition

您可以指定运行步骤、作业或阶段的条件。

  • 仅当与同一代理池的所有先前依赖项都成功时。如果您有不同的代理池,这些阶段或作业将同时运行。如果 YAML 中没有设置条件,则这是默认设置。
  • 即使之前的依赖已经失败,除非运行被取消。在 YAML 中使用 succeededOrFailed() 来处理这种情况。
  • 即使之前的依赖已经失败,即使运行被取消。在 YAML 中使用 always() 来处理这种情况。
  • 仅当先前的依赖项失败时。在 YAML 中为此条件使用 failed()

答案: