如何配置Jenkins Gerrit Trigger事件以排除文件路径?

时间:2014-06-12 22:25:39

标签: jenkins jenkins-plugins gerrit

背景

我的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作业?

2 个答案:

答案 0 :(得分:2)

使这个工作的技巧是在正则表达式中也必须省略COMMIT_MSG文件。

此错误报告描述了问题和解决方法:https://issues.jenkins-ci.org/browse/JENKINS-19891

修复只是使用以下RegExp模式:

^((?!manual_tests|\/COMMIT_MSG).)*$

答案 1 :(得分:1)

表单下方的Add Topic按钮显示了这样的功能。

screen shot from Gerrit

帮助文字解释:

  

然后,您可以选择提供要触发的特定文件路径和主题名称的名称。

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