如何在Jenkins中用Groovy脚本从refs/heads/cli_test提取分支名cli_test
在Jenkins Generic Webhook中仅触发提交事件并提取分支名
一、配置仅提交事件触发Webhook
- Git平台端设置:在你的Git仓库Webhook配置里,只勾选推送push(提交)事件,拒绝PR、issue等其他类型事件的推送,避免无效触发。
- Jenkins端过滤:在Generic Webhook Trigger插件配置页的「Filter」区域添加规则:
- 如果Webhook JSON包含
event字段且提交事件对应值为push,可设置「Expression」为push,「Text」为${event}(需先在「Post content parameters」中提取event字段)。 - 也可通过分支引用格式过滤,设置「Expression」为
refs/heads/.+,「Text」为${ref},确保只有分支提交的引用能触发构建。
- 如果Webhook JSON包含
二、用Groovy脚本提取分支名
分支引用格式固定为refs/heads/<分支名>,以下两种Groovy方案均可提取分支名:
方式1:字符串分割法
// ${ref}是从Webhook提取的分支引用变量,需先在Generic Webhook中配置提取 def ref = "${ref}" def branchName = ref.split('/')[2] // 将分支名存入环境变量,供后续构建步骤调用 env.BRANCH_NAME = branchName
方式2:正则匹配法(适配特殊分支名场景更健壮)
def ref = "${ref}" def branchMatcher = ref =~ /refs\/heads\/(.+)/ if (branchMatcher.matches()) { def branchName = branchMatcher[0][1] env.BRANCH_NAME = branchName }
三、Jenkins完整配置流程
- 在Generic Webhook的「Post content parameters」中添加参数:
- 参数名:
ref - JSON路径:
$.ref(根据你的Webhook实际JSON结构调整路径)
- 参数名:
- 在「Groovy script」区域填入上述提取代码,或者在Jenkins流水线中直接嵌入该逻辑。
- 保存配置后,提交代码到
cli_test分支,验证Webhook触发并正确提取分支名。
内容的提问来源于stack exchange,提问作者vikraman arut
相关产品推荐
相关产品推荐

