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

Posted

技术标签:

【中文标题】如何在 yaml 中处理 Azure DevOps 管道中的错误?【英文标题】:How to handle errors in Azure DevOps pipelines in yaml? 【发布时间】:2021-12-23 20:47:24 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

仅当所有先前与同一代理池的依赖关系都成功时。如果您有不同的代理池,那些阶段或工作 将同时运行。如果没有条件,这是默认值 在 YAML 中设置。 即使之前的依赖失败了,除非运行被取消。对于这种情况,请在 YAML 中使用 succeededOrFailed()。 即使先前的依赖已失败,即使运行被取消。对于这种情况,请在 YAML 中使用 always()仅当以前的依赖项失败时。对于这种情况,在 YAML 中使用 failed()

【讨论】:

以上是关于如何在 yaml 中处理 Azure DevOps 管道中的错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 azure devops 上的图表 yaml 文件中获取 appVersion?

如何在 azure devops YAML 管道中将单个代理用于多个作业/阶段

合并 PR 后如何限制 Azure DevOps YAML 管道中的关联工作项?

如何在 Azure DevOps yaml 管道中设置 ENVIRONMENT 状态

如何:在 Azure DevOps YAML 中有条件地插入模板?

在我的 Azure DevOps YAML Pipeline 中,如何将一堆阶段转换为作业矩阵?