1. 使用Jenkins Pipeline的parallel步骤实现Stage级并行
这是Debian环境下Jenkins实现多任务并行的主流方式,通过声明式Pipeline语法定义并行执行的stage。在Pipeline脚本中,parallel
关键字包裹多个stage,每个stage独立运行且可分配至不同节点(Agent)。例如:
pipeline {
agent any
stages {
stage('Non-Parallel Setup') {
steps { echo '执行前置准备任务' }
}
stage('Parallel Execution') {
parallel {
stage('Task 1: 单元测试') {
agent { label "test-agent" } // 可指定节点标签
steps { sh 'npm run test' } // 具体任务命令
}
stage('Task 2: 代码扫描') {
agent { label "scan-agent" }
steps { sh 'sonar-scanner' }
}
stage('Task 3: 打包构建') {
steps { sh 'mvn clean package' }
}
}
failFast true // 任一并行任务失败则终止整个并行组
}
}
}
此方法的优点是结构清晰、易于维护,支持动态调整并行任务数量(通过修改parallel
块内的stage),且能结合节点标签实现资源隔离。
2. Freestyle Job结合Shell脚本并行
若偏好使用Freestyle Job,可通过Shell脚本的&
符号后台执行命令,再用wait
等待所有后台任务完成。步骤如下:
#!/bin/bash
echo '启动Task 1'
./task1_script.sh > task1.log 2>&1 & # 后台执行Task 1,输出重定向至日志文件
echo '启动Task 2'
./task2_script.sh > task2.log 2>&1 &
echo '启动Task 3'
./task3_script.sh > task3.log 2>&1 &
wait # 等待所有后台任务结束
echo '所有并行任务完成'
3. 使用Multijob Plugin实现多任务组合并行
若需要在一个Job中管理多个子任务(如多个子项目或测试套件),可通过Multijob Plugin实现。步骤如下:
./subtask1.sh
)或引用其他Job;4. 配置分布式构建提升并行能力
若Debian服务器资源有限,可通过分布式构建将任务分配至多个Jenkins节点(Agent),实现跨机器的并行执行。步骤如下:
java -jar agent.jar -jnlpUrl http://master-ip:8080/computer/node-name/slave-agent.jnlp -secret your-secret -workDir "/path/to/workdir"
连接至主服务器);/var/lib/jenkins
),选择“Launch agent via SSH”并输入节点机器的SSH信息;agent
指令指定节点标签(如agent { label "worker-node-1" }
),确保任务分配至对应节点。注意事项
options { parallelsAlwaysFailFast() }
设置“快速失败”(任一并行任务失败立即终止整个并行组);