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

Jenkins Pipeline实现数组按每组2个分割为逗号分隔行用于并行执行

Jenkins Pipeline 数组分组并行实现方案

直接用Groovy原生的collate()方法就能快速实现按每组2个元素分割数组,再转成逗号连接的字符串,最终构建并行执行的阶段:

1. 核心分组与格式转换

假设你的projectDirectories数组示例如下:

def projectDirectories = ["order-service", "user-service", "pay-service", "cart-service", "log-service"]

用以下代码完成分组和格式转换:

// 按每组2个元素分割数组,最后一组不足2个也保留
def groupedDirs = projectDirectories.collate(2)
// 将每组元素用逗号连接成单行字符串
def taskGroups = groupedDirs.collect { group -> group.join(',') }

执行后taskGroups的结果为:

["order-service,user-service", "pay-service,cart-service", "log-service"]

2. 构建并行执行阶段

把转换后的字符串数组转成Jenkins Pipeline支持的并行任务Map,即可实现多阶段并行执行:

def parallelStages = [:]

taskGroups.eachWithIndex { taskStr, idx ->
    parallelStages["Stage_${idx+1}"] = {
        stage("Process: ${taskStr}") {
            // 拆分字符串回到目录数组,执行具体任务
            def dirs = taskStr.split(',')
            dirs.each { dir ->
                echo "Running job for ${dir}"
                // 这里替换成你的实际操作,比如:
                // sh "./build.sh ${dir}"
            }
        }
    }
}

// 启动并行执行
parallel parallelStages

3. 替代自定义partition函数的原因

Groovy的collate()方法是原生实现的数组分组工具,比自定义partition函数更稳定,支持自动处理数组长度不能被分组数整除的情况(比如示例中最后一组只有1个元素),无需额外编写边界处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:42:33