Azure Devops管道触发器在触发标记时忽略路径



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

前端构建的ci-yml

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

api构建ci-yml

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

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

标记筛选应该忽略路径,还是应该以与分支相同的方式工作?

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

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

标记筛选应该忽略路径,还是应该在相同的路径中工作像树枝一样?

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

请查看官方文件中的注意提示:

如果将标记与包含文件路径的分支过滤器组合指定,则如果满足分支过滤器并且满足标记或路径过滤器,则会触发触发器

问题原因:

这就是为什么在您的场景中,两个构建都会被触发。由于现在将标记与分支过滤器和文件路径过滤器结合使用,因此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总是被满足,它将同时触发两个构建。

正如您上面提到的,在这种情况下,使用更多描述性标签作为变通方法不是一个糟糕的选择。此外,如果您确实想让三个过滤器同时工作,请随时在我们的用户语音论坛中建议一个功能来分享您的反馈。在这里分享链接,感兴趣的会员会投票给你。

相关内容

  • 没有找到相关文章

最新更新