【问题标题】:Azure Devops Pipeline trigger ignore paths when a tag is triggered触发标记时 Azure Devops Pipeline 触发忽略路径
【发布时间】:2020-07-06 23:18:34
【问题描述】:

我有两个构建管道来构建我的客户端和 API,但是当我创建一个新的 git 标签时,两个构建都会被触发,即使该标签可能只与基于我的客户端代码的更改有关。

前端构建-ci.yml

trigger:
  branches:
    include:
      - master
  tags:
    include:
      - refs/tags/*_prodrelease*
  paths:
    include:
      - Clients/*
    exclude:
      - Api/*

api-build-ci-yml

trigger:
  branches:
    include:
      - master
  tags:
    include:
      - refs/tags/*_prodrelease*
  paths:
    include:
      - Api/*
    exclude:
      - Clients/*

定期提交按预期工作(即客户端代码触发客户端构建),我尝试了多种排除路径的变体,但均无济于事。

标签过滤应该忽略路径,还是应该像分支一样工作?

一种解决方法是使用更多描述性标签(即 20200326_prodrelease_api),但如果 api 和客户端都准备好投入生产,我会尽量避免需要两个标签。

【问题讨论】:

    标签: azure-devops yaml azure-pipelines build-pipeline build-triggers


    【解决方案1】:

    当我创建一个新的 git 标签时,两个构建都会被触发,即使 该标签可能仅与基于我的客户端代码的更改有关。

    标签过滤应该忽略路径,还是应该在相同的情况下工作 像树枝一样吗?

    抱歉,您遇到的恐怕是 CI 触发器的预期行为。是的,当标签与包含文件路径的分支过滤器结合使用时,您的猜测是正确的tag filtering is ignoring paths

    请查看official document中的注意提示:

    如果您指定标签与包含文件路径的分支过滤器结合使用,则如果满足分支过滤器并且满足标签或路径过滤器,则触发器将触发。

    问题原因:

    这就是为什么在您的场景中触发了两个构建。由于您现在将标签与分支过滤器和文件路径过滤器结合使用,branch filter ok + tag okbranch filter ok + path ok 都可以触发构建。

    行为:

    不创建标签时,branch filter ok + path ok 将像 client code triggers client buildapi code triggers api build 一样工作。并且在创建特定标签时,由于总是满足branch filter ok + tag ok,它会同时触发两个构建。

    正如您在上面提到的,使用更具描述性的标签作为解决方法在这种情况下并不是一个糟糕的选择。此外,如果您确实想要让三个过滤器同时工作这样的功能,请随时通过在我们的User Voice Forum 中提出一项功能来分享您的反馈。在此处分享链接,感兴趣的成员会为您投票。

    【讨论】:

      猜你喜欢
      • 2021-07-14
      • 2019-12-15
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 2021-06-10
      • 2021-03-29
      • 1970-01-01
      • 2021-08-12
      相关资源
      最近更新 更多