5

Jenkins Gerrit 触发器插件有一个“添加禁止文件路径”按钮,但实际上没有太多可用的文档。
那么它的确切行为是什么?

  • 如果更改的文件之一匹配,它会禁止触发器吗?
  • 或者如果所有更改的文件都匹配,它会禁止触发器吗?
    (换句话说:只有匹配的文件发生了变化)
  • 我想它“覆盖”了“添加文件路径”的匹配,不是吗?
  • 它仅适用于目录名还是文件名?


如果: “文件路径”=^((?!_abc)(?!_def).)*$
的行为等于:
“禁止的文件路径”= ,这会导致问题^.*_abc$|^.*_def$

4

2 回答 2

3

一个或多个文件

如果更改的文件之一匹配,它会禁止触发器吗?或者如果所有更改的文件都匹配,它会禁止触发器吗?(换句话说:只有匹配的文件发生了变化)

如果任何文件匹配,则根据提交消息触发器被禁止。

此禁止文件允许项目在任何禁止文件受到影响时不触发。

覆盖

我想它“覆盖”了“添加文件路径”的匹配,不是吗?

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

为...卖力 ...

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

对彼此而言。但是很难添加空文件夹。

关于行为的问题

这导致了以下问题:

“文件路径”= ^((?!_abc)(?!_def).)*$

行为等于:

“禁止的文件路径”= ^。_abc$|^。_def$ ?

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

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

  1. Add File path如果发现其中任何一个,则开始构建。但Add Forbidden File path如果找到任何文件,则禁止构建。
  2. Add File path此外,您**至少需要填写才能开始工作Add Forbidden File path。如果为空Add Forbidden File path则不起作用。Add File path
于 2015-09-09T17:36:20.637 回答
2

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

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

因此,我进行了一天的测试,但它似乎在我的站点上不起作用

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

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

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

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

于 2015-10-09T08:19:54.093 回答