You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Groovy编写Jira ScriptRunner前置钩子限制Git分支名至50字符

解决Jira ScriptRunner前置钩子阻止过长Git分支的问题

首先你代码的核心问题是错误使用了Jenkins专属变量(currentBuild),这在Jira的ScriptRunner钩子环境里不存在,导致代码无法正确获取分支名,自然不会生效。以下是修正后的可行方案:

修正后的Groovy脚本

针对Jira ScriptRunner的Git仓库前置钩子(Pre-Receive Hook),正确获取分支名并拦截过长分支的代码如下:

// 从仓库钩子事件中提取分支名称(移除refs/heads/前缀)
def branchRef = repositoryHookEvent.refChanges.first().refId
def branchName = branchRef.replace('refs/heads/', '')

def branchNameLimit = 50
def branchNameLength = branchName.length()

if (branchNameLength > branchNameLimit) {
    // 修正拼写错误,确保提示信息准确
    error("分支名称过长;限制长度为${branchNameLimit}字符。当前分支长度:${branchNameLength}字符。")
}

关键修正点说明

  • 分支名获取逻辑:Jira ScriptRunner的仓库钩子通过repositoryHookEvent对象获取分支信息,refId的格式为refs/heads/分支名,需要用replace去掉前缀得到真实分支名。
  • 拼写修正:原代码里的characteres、lenght是拼写错误,修正为characters、length,避免提示信息混乱。
  • 钩子类型确认:确保你在ScriptRunner中创建的是Pre-Receive Hook(前置接收钩子),这样才能在分支创建完成前触发校验拦截。

额外注意事项

  • 若你集成的是GitLab/GitHub等第三方托管服务,可能需要微调分支名的获取逻辑(不同平台的事件对象字段略有差异),但核心逻辑一致:先拿到分支全名,再提取真实分支名做长度判断。
  • 测试时手动创建一个超过50字符的分支,验证钩子是否正常触发拦截。

内容的提问来源于stack exchange,提问作者Vince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:55:19