确切使用"禁止文件路径" Jenkins Gerrit Trigger插件

时间:2015-03-13 08:54:53

标签: jenkins gerrit-trigger

Jenkins Gerrit Trigger插件有一个按钮" Add Forbidden File path"但实际上没有太多可用的文件。
那么它的确切行为是什么?

  • 如果一个更改的文件匹配,是否会阻止触发?
  • 或者,如果所有更改的文件都匹配,是否会阻止触发?
    (换句话说:只匹配的文件已更改)
  • 我认为"覆盖"匹配"添加文件路径",不是吗?
  • 仅适用于目录名称还是文件名?

这导致了如下问题:
"文件路径" = ^((?!_abc)(?!_def).)*$
行为等于:
"禁止文件路径" = ^.*_abc$|^.*_def$

2 个答案:

答案 0 :(得分:2)

一个或多个文件

  

如果其中一个更改的文件匹配,是否会禁止触发?   或者,如果所有更改的文件都匹配,它是否会禁止触发?   (换句话说:只有匹配的文件已经改变)

根据commit message,如果匹配任何文件,则触发器被禁止。

  

此禁止文件允许项目在禁止的情况下不会触发   文件已受到影响。

重写

  

我认为"覆盖"匹配"添加文件路径",不是吗?

是。 Add Forbidden file path的优先级高于Add File path

为...工作

  

它只适用于目录名称还是文件名?

两者兼而有之。但是很难添加空文件夹。

关于行为的问题

  

这导致了以下问题:

     

"文件路径" = ^((?!_ abc)(?!_ def)。)* $

     

表现等于:

     

"禁止文件路径" = ^。 _abc $ | ^。 _def $?

可能你犯了一个错误:^((?!_abc)(?!_def).)*$而不是^.*(?!_abc)(?!_def)$。因为在第一种情况下,您从开始比较(^)和量词(*)重复整个表达式,而不是.

在第二种情况下,我们对两个或更多文件有不同的行为。因为

  1. Add File path如果发现其中任何一个,则开始构建。但是Add Forbidden File path会在发现任何文件时禁止构建。
  2. 此外,您需要至少使用Add File path填充**以开始工作Add Forbidden File path。如果Add Forbidden File path为空,则Add File path无法正常工作。

答案 1 :(得分:1)

根据文档,我的需求应该使用插件的V2.16.0(参见JENKINS-30620) - 新选项“禁用严格的禁止文件验证”应该用于此。
在帮助中它说:

  
      
  • 启用此选项将允许事件触发构建,如果事件包含一个或多个所需文件路径和一个或多个   禁止文件路径。
  •   
  • 换句话说,使用此选项,如果更改仅包含禁用文件,则不会触发构建,否则将触发   会被触发。
  •   

所以我花了一天的时间测试,但它似乎不适用于我的网站

但至少我通过“添加文件路径”参数使其工作,这要归功于JENKINS-19891中提供的信息:

  

但是,由于提交始终包含 COMMIT_MSG 文件,因此它将匹配正则表达式并触发构建。

所以我将提交消息文件添加到我的正则表达式,最终给了我正确的结果。

示例: ^((?!\/COMMIT_MSG|cunit|_abc|_def[\/\.]).)*$
...忽略文件中的更改名称(包括路径)包含“cunit”,“_ abc”,“_ unde”中的任何一个。或“_def /”