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

Jenkins Groovy:如何从分支名参数中提取第三个数字?

从Git分支名提取第三个版本号的Groovy实现

针对release-1.2.3这种固定格式的分支名,这里有几种优雅的Groovy实现方式,比单纯硬写正则更简洁直观:

方法一:字符串分割(最直观,适合格式固定场景)

利用Groovy对字符串分割的简化语法,直接拆分出目标数字:

def extractThirdVersionNumber(String branchName) {
    // 同时按'-'和'.'分割字符串,拆分出各部分
    def parts = branchName.split(/[- .]/)
    // 索引3对应第三个数字(parts[0]是release,1是第一位版本号,2是第二位,3是第三位)
    return parts.size() >= 4 ? parts[3] : null
}

// 调用示例
def newestTagNumber = extractThirdVersionNumber("release-1.2.3")
println newestTagNumber // 输出3

如果分支格式绝对固定(不会出现异常格式),甚至可以简化成一行:

def newestTagNumber = branchName.split(/[- .]/)[3]

方法二:正则分组(灵活适配小格式变化)

如果担心分支名有微小格式差异(比如前两位版本号是多位数),用正则分组会更鲁棒,Groovy的=~操作符可以快速匹配:

def extractThirdVersionNumber(String branchName) {
    def matcher = branchName =~ /release-\d+\.\d+\.(\d+)/
    return matcher.matches() ? matcher[0][1] : null
}

// 调用示例
def newestTagNumber = extractThirdVersionNumber("release-10.20.30")
println newestTagNumber // 输出30

这种方式能准确捕获第三个数字,适配前两位版本号为多位数的场景。

方法三:函数式风格的字符串处理

如果偏好函数式写法,可以结合tokenize和安全调用操作符?.,避免空指针异常:

def extractThirdVersionNumber(String branchName) {
    // 先按'-'拆分取版本部分,再按'.'拆分取第三位
    return branchName.tokenize('-')[1]?.tokenize('.')?.getAt(2)
}

// 调用示例
def newestTagNumber = extractThirdVersionNumber("release-1.2.3")

tokenize比split更轻量,适合处理简单分隔符,?.操作符能在分支格式不符合要求时返回null,避免报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:24:46