
Jenkins 视图如何用正则表达式只显示匹配的任务以及如何排除特定前缀【免费下载链接】jenkinsJenkins automation server项目地址: https://gitcode.com/GitHub_Trending/je/jenkins当一个 Jenkins 实例里任务job数量很多时手动一个个勾选任务加入视图并不现实。Jenkins 的 List 视图ListView提供了一个使用正则表达式向视图中包含任务的选项配置后正则表达式会被应用到所有任务名上只有匹配的任务才会显示在该视图中。如果还想反过来排除某类前缀的任务例如所有test*开头的任务Jenkins 的帮助文档给出了基于负向前瞻negative lookahead的写法。本文基于仓库中的帮助文档与ListView源码说明这条配置路径的具体做法与验证方式。在哪里配置视图的 Jobs 区域List 视图的配置页面由 configure-entries.jelly 渲染其中 Jobs 区域包含Recurse in subfolders复选框控制是否递归包含子文件夹ItemGroup内的任务一个名为useincluderegex的可选区块标题为Use a regular expression to include jobs into the view勾选后展开一个Regular expression文本框表单字段名includeRegex。这个文本框右侧的帮助链接指向 includeregex.html其正文说明了正则的语义和排除写法If configured, the regular expression will be applied to all job names. Those that match the regular expression will be shown in this view. Tip: to exclude certain patterns, use negative lookahead. For example, to display all jobs not namedtest something, use:(?!test.*).*也就是说只要启用了该选项表达式就作用于所有任务名匹配者进入视图这是只显示匹配任务的正向用法。正则如何匹配任务名查看 ListView.java 的实现有几个直接影响写法的事实整名匹配正则通过Pattern.compile(includeRegex)编译setIncludeRegex随后用includePattern.matcher(itemName).matches()判断即任务名必须从头到尾完整匹配表达式而不是部分包含。因此只显示以build-开头的任务应写成build-.*而不是build-。与手动勾选的任务是并集getItems()先收集视图中显式保存的任务名jobNames再把正则匹配到的任务追加进来最后用LinkedHashSet去重。所以正则不会替换已勾选的任务而是额外纳入匹配项。Recurse 影响匹配范围勾选 Recurse in subfolders 时正则在子文件夹的任务上按相对于父级组的名字getRelativeNameFrom匹配不勾选时只在直接子级上匹配。如果你的任务放在文件夹里需要确认这项勾选状态是否符合预期。排除特定前缀负向前瞻写法要排除某前缀的任务时帮助文档给出的文档示例是显示所有不以test开头的任务表达式为(?!test.*).*这是一个负向前瞻test.*开头的名字被!(...)排除其余名字由末尾的.*匹配。如果你的前缀不是test而是例如dev-按同样结构替换即可写成(?!dev-.*).*——这一推理由文档示例的前瞻结构而来文档本身只演示了test前缀这一种。注意该示例来自 Jenkins 帮助文档展示的是如何排除的方法实际效果取决于你的任务命名。保存后如何验证配置是否生效可以从两个层面核对语法校验提交表单时ListView.DescriptorImpl.doCheckIncludeRegex会再次Pattern.compile你填写的表达式如果出现PatternSyntaxException页面会直接显示异常信息作为错误FormValidation.error(pse.getMessage())配置不会按无效正则保存。也就是说非法正则在界面上就会被指出并能看到 Java 给出的具体报错。视图结果保存后打开该视图列表中只应出现满足正则的任务以及显式勾选的任务。可以故意写一个过窄的表达式如只匹配某个确切任务名来确认其余任务确实不再出现再改回目标表达式。另外readResolve中有一段旧数据兼容逻辑如果配置文件中已保存的正则在加载时编译失败Jenkins 会将其置空并上报到OldDataMonitor而不是让视图崩溃。若你在Old data诊断里看到与视图相关的报告可先检查该视图的正则是否已被清空。小结与边界该功能只适用于 List 视图ListView配置入口是其配置页面的 Jobs 区域。表达式必须同时满足Javajava.util.regex语法 matches()整名匹配语义。排除前缀用负向前瞻(?!prefix.*).*正向包含用普通的prefix.*形式。正则与显式勾选的任务取并集展示想彻底只看正则时需保证没有额外勾选的任务。更多背景可参考 ListView.java 中getItems()的完整匹配逻辑以及测试用例 ListViewTest.java 中setIncludeRegex(p.*)等用法示例。【免费下载链接】jenkinsJenkins automation server项目地址: https://gitcode.com/GitHub_Trending/je/jenkins创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考