我正在使用与git和gerrit触发器集成的Jenkins。
我管理着一个巨大的回购,它带来了大量的提交。所以我对在每次推送上运行整个项目的完整构建不感兴趣。 这里的想法是构建特定的项目.pom文件,其中有代码更改。
例如:
-"common" is a subdir with its own .pom
-"persistence" is a subdir with its own .pom. "persistence" depends on common dir.
因此,如果持久性目录有变化,我必须只构建持久性.pom文件,因为它将构建为依赖项。另一方面,如果有人改变共同的代码,jenkins就没有必要建立持久性。所以它会节省我的时间和资源。
所以这里的问题是我怎么能这样做? gerrit触发器是否对此有任何支持?
更新:在选择已更改的文件时,文件RegEx选项是指文件路径还是文件名?
而且,有没有办法,使用文件RegEx字段,表达类似构建“如果共同变化而不是持久性变化”?
答案 0 :(得分:1)
您是否尝试过使用Dynamic Trigger Configuration?您定义了一个过滤器 - 作业应该从哪个更改开始。因此,您为每个构建创建作业,然后使用过滤器定义适当的gerrit触发器。 或者,如果您只想为每个构建使用一个作业 - 那么编写一个脚本,您可以使用git将determine更改为哪个文件,然后为其选择正确的项目文件。
更新:尝试使用新版本参数:GERRIT_TOPIC
因此,请使用正确的TOPIC名称推送您的更改,例如
git push origin HEAD:refs/for/master/topic_name
其中topic_name可以是常见的,持久性的 可以使用git中的pre-push hook自动填充主题名称。