Jenkins Gerrit Trigger插件有一个按钮" Add Forbidden File path"但实际上没有太多可用的文件。
那么它的确切行为是什么?
这导致了如下问题:
"文件路径" = ^((?!_abc)(?!_def).)*$
行为等于:
"禁止文件路径" = ^.*_abc$|^.*_def$
?
答案 0 :(得分:2)
如果其中一个更改的文件匹配,是否会禁止触发? 或者,如果所有更改的文件都匹配,它是否会禁止触发? (换句话说:只有匹配的文件已经改变)
根据commit message,如果匹配任何文件,则触发器被禁止。
此禁止文件允许项目在禁止的情况下不会触发 文件已受到影响。
我认为"覆盖"匹配"添加文件路径",不是吗?
是。 Add Forbidden file path
的优先级高于Add File path
。
它只适用于目录名称还是文件名?
两者兼而有之。但是很难添加空文件夹。
这导致了以下问题:
"文件路径" = ^((?!_ abc)(?!_ def)。)* $
表现等于:
"禁止文件路径" = ^。 _abc $ | ^。 _def $?
可能你犯了一个错误:^((?!_abc)(?!_def).)*$
而不是^.*(?!_abc)(?!_def)$
。因为在第一种情况下,您从开始比较(^
)和量词(*
)重复整个表达式,而不是.
。
在第二种情况下,我们对两个或更多文件有不同的行为。因为
Add File path
如果发现其中任何一个,则开始构建。但是Add Forbidden File path
会在发现任何文件时禁止构建。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 /”