首页 > 解决方案 > Azure DevOps 构建管道无法使用标记和路径筛选器构建

问题描述

所以我有一个奇怪的事件在它应该发生的时候没有触发。我有一个主分支和一个 Azure DevOps 构建管道。分支过滤器设置为 all as *。它建立。我添加了一个带有“/src/SomeFolder1”的路径过滤器,它使用仅签入该文件夹的代码构建。完美的。

现在,我添加了另一个带有“refs/tags/v*”的分支过滤器,就像我一直对其他项目的其他构建定义所做的那样,没有路径过滤器并且一直有效。

在与构建管道关联的 git 存储库中,我创建了一个 git 标记为“v1.0.0”,但没有任何反应。没有触发自动构建。我查看了 Microsoft 文档(https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers?view=azure-devops&tabs=yaml#tags),我认为我符合要求。我错过了什么吗?

我的最终 CI 触发器是:

Branch filter:
  1) '*'
  2) 'refs/tags/v*'

Path filter:
  1) '/src/SomeFolder1'

当我删除路径过滤器时,触发器可以完美地工作文件。它可以工作/或工作,但不能同时工作。

标签: gitazure-devopsazure-pipelines

解决方案


根据我们在评论中的讨论和我的测试,问题是路径过滤器。应用规则时,路径过滤器似乎具有优先权。如果不更改实际内容,则永远不会评估分支或标签过滤器。使用标签,不会更改实际内容,这解释了构建未触发的原因。我通过将路径过滤器从包含翻转到排除来验证了这一点。只要您设置了路径过滤器,它就会寻找内容更改。

我的建议是为您描述的场景创建一个功能请求或设置一个单独的构建(我知道,不理想)。


推荐阅读