Jenkins Pipeline中when标签正则匹配不生效问题求助
解决Jenkins Pipeline标签匹配不生效问题
问题根源
你遇到的问题出在when { tag }的比较器和表达式写法上:
- 第一种配置用
*rc*搭配REGEXP比较器,但REGEXP只识别标准正则语法,不支持通配符*。 - 第二种配置给正则加了首尾斜杠
/(.*)rc(.*)/,Jenkins会把斜杠当作匹配内容的一部分,导致只有标签包含斜杠时才会命中,不符合需求。
正确配置方案
方案1:使用正则表达式(REGEXP比较器)
用标准正则匹配包含rc的标签,无需加首尾斜杠:
pipeline { agent any stages { stage('Build') { when { tag pattern: '.*rc.*', comparator: 'REGEXP' } steps { sh "echo 'DO SOMETHING'" } } } }
如果需要忽略rc的大小写(如匹配RC/Rc),可修改正则为:
tag pattern: '(?i).*rc.*', comparator: 'REGEXP'
方案2:使用通配符(GLOB比较器)
若更习惯用*作为通配符,切换到GLOB比较器即可直接用*rc*匹配:
pipeline { agent any stages { stage('Build') { when { tag pattern: '*rc*', comparator: 'GLOB' } steps { sh "echo 'DO SOMETHING'" } } } }
额外注意事项
- 确保当前构建是标签触发的:
when { tag }仅对标签类型构建生效,分支构建会直接跳过该阶段(分支无标签)。 - 检查标签实际格式:比如带前缀的
v1.0.0-rc1,上述两种方案都能正常匹配。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

