Azure DevOps:如何在 YAML 模板管道上禁用 CI 触发器?

Azure DevOps : how to disable CI trigger on a YAML template pipeline?

在模板管道中,您不能放置任何触发器语句,例如 trigger: none 作为 specified 在 Microsoft 的 docs 中禁用 ci 触发器,所以我想知道如何防止每次更新这些管道或同一分支中的任何其他 yaml 文件时执行这些管道?

如果您想在不影响使用此模板的管道的情况下更新您的模板,请在单独的分支上进行更改,并在确定您拥有所需内容后将其合并到 master(或您使用的任何分支)。

如果您使用来自不同存储库的模板,同样适用:

# Repo: Contoso/WindowsProduct
# File: azure-pipelines.yml
resources:
  repositories:
    - repository: templates
      type: github
      name: Contoso/BuildTemplates
      ref: refs/tags/v1.0 # optional ref to pin to

jobs:
- template: common.yml@templates  # Template reference
  parameters:
    vmImage: 'vs2017-win2016'

默认情况下,您使用主分支中的模板,但您可以指向任何您想要的分支。因此,您还可以测试您对有限管道的更改,因为您需要直接指向您修改模板的分支。

假设你有那个分支:

master
|_ feature/add-extra-step

并且您在模板中进行了更改,但是在 feature/add-extra-step 上添加了额外的步骤。

现在,当您触发使用该模板的管道时:

  • 触发器来自 master - 您在模板中的额外步骤不会是 运行
  • 触发器来自 feature/add-extra-step - 您的额外步骤将是 运行

我在 feature/extra-step 分支上更改了模板:

当我在 master 上 运行 管道(甚至是同一个管道)时,这个变化是不可行的:

例如,如果您不想触发 ci 在模板上进行更改,请在 git 消息中使用短语 [skip ci] 提交这些更改。查看 here 了解更多详情。

所以最后在模板管道中你不能声明像 trigger: none 这样的东西(只设置手动触发)并且你不能指定阶段或作业,只允许步骤(所以你不能定义任何条件以防止管道在作业或舞台上执行。

您可以选择禁用 CI 触发器,方法是进入模板管道的触发器部分和 select 以下内容:

我不太喜欢这个选项,因为它意味着在 yaml 管道定义中没有捕获管道配置,但我发现没有其他方法可以禁止模板管道在每次某些事情(包括管道本身)时被触发) 在其分支中更新。

管道 yaml 定义现在支持使用

禁用所有触发器
trigger: none

Reference