推送标签时触发多个构建管道

Posted

技术标签:

【中文标题】推送标签时触发多个构建管道【英文标题】:Multiple build pipelines triggered when a tag is pushed 【发布时间】:2020-12-05 08:15:38 【问题描述】:

我在 Azure DevOps 中为存储库中的不同分支创建了多个构建管道。 我的目的是在推送特定标签时触发每个管道。 该标签的结构对每个管道都是唯一的。 示例:

--MyRepository
 |
 --master
 |
 --ops
 |
 --dev
 |
 --qa

用于开发、操作和质量检查的构建管道:

dev 应在当且仅当推dev-v* 时触发 ops 应在当且仅当推ops-v* 时触发 qa 应该在当且仅当推qa-v* 时触发

这是我的 yaml 文件的样子(其他管道的类似文件):

trigger:
  branches:
    include:
      - refs/tags/ops-v*
    exclude:
      - refs/tags/qa*
      - refs/tags/dev*
stages:
- stage: Init
  jobs:
  - job: CheckoutInit
    steps:
    - checkout: self
    - script: *do something*

现在,当我推送 dev-v1.0.0 时会发生什么,虽然只有开发管道应该启动,但所有管道都被触发了。我做错了什么还是我忽略了什么? 任何帮助是极大的赞赏。干杯! 注意:我对使用 Azure Devops 还很陌生。

【问题讨论】:

你确定吗?我刚刚检查过,上面的管道仅针对ops-v1.0.0 触发,而不针对dev-v1.0.0 触发。 嘿,是的,我确定。如果有帮助,我可以附上屏幕截图。 嗨@Roy。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。谢谢。 【参考方案1】:

根据我的测试,您的 Yaml 触发器可能是正确的。

当 yaml 文件在每个分支中具有相同的名称时,我可以重现类似的问题。

例如:

--MyRepository
 |
 --master
 |
 --ops
   -- azure-pipelines.yml
 |
 --dev
   -- azure-pipelines.yml
 |
 --qa
  -- azure-pipelines.yml

因此您可以检查 yaml 文件是否具有相同的名称。

要解决此问题,您可以更改每个 Yaml 文件名并确保它们是唯一的。

--MyRepository
 |
 --master
 |
 --ops
   -- azure-pipelines-ops.yml
 |
 --dev
   -- azure-pipelines-dev.yml
 |
 --qa
  -- azure-pipelines-qa.yml

然后您需要再次使用 yaml 文件(新名称)创建新管道。

【讨论】:

这对我有用。确实是菜鸟的错误。感谢您的修复!

以上是关于推送标签时触发多个构建管道的主要内容,如果未能解决你的问题,请参考以下文章

在GitHub推送时不会触发Jenkins管道作业

如何在推送某个分支时设置 github webhook 触发器

如何在任何分支上的每次新推送时触发 Azure Pipeline?

一个提交的多个管道?

我的CloudWatch Event规则不会触发我的CodePipeline管道

Gitlab双管道触发问题