我的git存储库由Gerrit服务器托管。我们还使用Jenkins以及Gerrit事件和Git插件,在审查被推送到Gerrit时触发自动jenkins工作。
假设git repo具有以下文件夹结构
ProjectA
- .git
- folderA
- folderA/folderA1
- folderA/manual_tests
- folderA/manual_tests/file1
- folderB
- folderB/folderB1
- folderB/manual_tests/file2
- folderC
- folderC/folderC1
- folderC/manual_tests/file3
- folderD
- folderD/folderD1
- folderD/folderD1/FolderD11
- folderD/folderD1/FolderD11/manual_tests/file4
- folderD/folderD1/FolderD12
- folderD/folderD2
目前,通过使用模式Path
指定类型**
,Jenkins作业被定义为在所有分支上运行。此配置会导致作业在每次审核时运行。
这就是我想要完成的事情:
manual_tests
文件夹所做的更改,我不希望Jenkins Jobs被触发。manual_tests
的文件/文件夹,则触发作业我尝试添加File Path
类型RegExp
,格式为(?!.*manual_tests.*).*
,但这并未实现我的最终目标。我尝试了各种正则表达式模式,但我从来没有达到最终目标。
如果gerrit审核仅包含manual_tests
文件夹中的更改,是否可以不触发Jenkins作业?
答案 0 :(得分:2)
使这个工作的技巧是在正则表达式中也必须省略COMMIT_MSG文件。
此错误报告描述了问题和解决方法:https://issues.jenkins-ci.org/browse/JENKINS-19891
修复只是使用以下RegExp模式:
^((?!manual_tests|\/COMMIT_MSG).)*$
答案 1 :(得分:1)
表单下方的Add Topic
按钮显示了这样的功能。
帮助文字解释:
然后,您可以选择提供要触发的特定文件路径和主题名称的名称。
- 仅在补丁集包含特定文件夹中的文件时才触发构建。
- 仅在更改属于某个主题时才触发构建。