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

Jenkins Pipeline Groovy脚本:检查版本列表是否存在点版本

Jenkins Pipeline Groovy脚本:检查同主版本的非0点版本

需求分析

给定固定不可修改的版本列表(如["Version-2.5.0.0", "Version-2.4.0.0", "Version-2.3.1.0", "Version-2.3.0.0", "Version-2.0.0.0"]),需要遍历每个版本,同时判断当前版本所属的**主版本(x.y)下是否存在点版本(z≠0)**的条目。

解决方案代码

以下是类Java风格的Groovy实现,适配Jenkins Pipeline环境:

1. 定义固定版本列表

// 固定不可修改的版本列表
final List<String> VERSIONS = ["Version-2.5.0.0", "Version-2.4.0.0", "Version-2.3.1.0", "Version-2.3.0.0", "Version-2.0.0.0"]

2. 构建主版本到点版本的映射

先预处理版本列表,将同一主版本的点版本收集到映射中,避免重复遍历提升效率:

// 键:主版本(格式如"2.3"),值:该主版本下所有点版本的列表
Map<String, List<Integer>> mainVersionPatchMap = new HashMap<>()

for (String version : VERSIONS) {
    // 拆分版本字符串,提取纯版本号部分(如"2.3.1.0")
    String versionNum = version.split("-")[1]
    // 按点号拆分版本号为数组
    String[] versionParts = versionNum.split("\\.")
    
    // 拼接主版本标识(前两位)
    String mainVersion = versionParts[0] + "." + versionParts[1]
    // 转换点版本为整数
    int patchVersion = Integer.parseInt(versionParts[2])
    
    // 将点版本加入对应主版本的列表
    if (!mainVersionPatchMap.containsKey(mainVersion)) {
        mainVersionPatchMap.put(mainVersion, new ArrayList<>())
    }
    mainVersionPatchMap.get(mainVersion).add(patchVersion)
}

3. 遍历版本列表并检查条件

遍历每个版本,通过映射快速判断是否存在同主版本的非0点版本:

for (String version : VERSIONS) {
    String versionNum = version.split("-")[1]
    String[] versionParts = versionNum.split("\\.")
    String mainVersion = versionParts[0] + "." + versionParts[1]
    
    // 判断当前主版本下是否有非0的点版本(兼容低版本Java的循环写法)
    boolean hasNonZeroPatch = false
    for (int patch : mainVersionPatchMap.get(mainVersion)) {
        if (patch != 0) {
            hasNonZeroPatch = true
            break // 找到一个非0点版本即可终止判断
        }
    }
    
    // 这里替换为你的业务处理逻辑
    println "版本 ${version} | 主版本 ${mainVersion} | 存在非0点版本:${hasNonZeroPatch}"
    if (hasNonZeroPatch) {
        // 存在非0点版本时的处理逻辑
        // do something...
    } else {
        // 无点版本时的处理逻辑
        // do something else...
    }
}

关键说明

  • 字符串拆分注意事项:使用split("\\.")拆分版本号,因为点号在正则表达式中是通配符,需要转义。
  • 映射的作用:提前构建主版本与点版本的映射,避免每次检查都遍历整个版本列表,尤其当版本数量较多时能显著提升效率。
  • 兼容性:采用Java风格的循环判断替代Stream API,确保在Jenkins环境的Groovy版本中都能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:10:24