2014-06-12 49 views
4

背景

我的git存储库由Gerrit服务器托管。我们还使用Jenkins以及Gerrit Event和Git Plugin来引发自动jenkins作业,当审查推送到Gerrit时。如何配置Jenkins Gerrit触发器事件以排除文件路径?

说出混帐回购协议有以下文件夹结构

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类型与模式**所有分支上运行。此配置会导致作业在每次审阅时运行。

的问题

这里就是我试图完成:

  • 如果代码审查只包含任何manual_tests文件夹中所做的更改,我不想詹金斯的工作来触发。
  • 如果回顾至少包含至少一个文件/文件夹不是manual_tests,触发器的工作

我尝试添加一个File PathRegExp类型与(?!.*manual_tests.*).*的模式,但这并没有达到我的目的目标。我尝试了各种正则表达式模式,但我从来没有达到最终目标。

如果gerrit评论仅包含manual_tests文件夹中的更改,是否可以不触发Jenkins作业?

+0

你尝试过这种格式在这里解释呢? http://stackoverflow.com/a/5334825/1342413 – HiB

回答

1

表格下方的Add Topic显示了这样的功能。

screen shot from Gerrit

帮助文本解释:

然后你就可以选择性地提供特定的文件路径(S)和主题名称的名称触发。

  • 仅在补丁集包含某个文件夹中的文件时触发构建。
  • 仅当更改属于主题时才触发构建。
+2

这只是一个包含,但有时您需要从包含的路径中排除某些内容。 –

0

的窍门能让工作就是COMMIT_MSG文件必须在正则表达式可以省略为好。

这个bug报告描述的问题和解决方法:https://issues.jenkins-ci.org/browse/JENKINS-19891

的解决方法是简单地使用下面的正则表达式模式:

^((?!manual_tests|\/COMMIT_MSG).)*$ 
相关问题