Ubuntu 上 Jenkins 多任务处理的实用方案
一 并行方式总览与选择
- 单机多 Executors:在 Manage Jenkins → Configure System 调整 # of executors,同一节点可同时跑多个构建,适合轻量任务与快速构建。
- Pipeline 并行阶段:在 Jenkinsfile 的 parallel 块中并行执行多个 stage,适合将一个流水线中的任务拆分并行。
- 多节点分布式:在 Manage Jenkins → Manage Nodes and Clouds 添加 Agent/节点,按标签调度,适合大规模与资源隔离。
- 多任务编排:使用 MultiJob Project 插件把多个 Job 组合成一个主任务,统一触发与汇总结果。
- 任务关联触发:通过“构建后操作”的“其他工程后构建”,按前驱任务的不同结果(成功/失败/不稳定)触发后续任务,适合有先后依赖的流程。
二 快速上手示例
- 示例一 Pipeline 并行阶段(Jenkinsfile)
pipeline {
agent any
stages {
stage('并行构建') {
parallel {
stage('构建前端') {
steps { echo 'Building frontend...' }
}
stage('构建后端') {
steps { echo 'Building backend...' }
}
}
}
}
}
- 示例二 多任务并行编排(MultiJob Project)
- 安装 MultiJob Project 插件;新建一个 MultiJob 任务;在“构建步骤”中添加多个 MultiJob Phase,把需要并行或按序执行的 Job 加入;如需并行,将每个 Phase 的“依赖关系”设为 never;如需串行,设置正确的依赖;在该主任务上统一配置 定时 与 邮件通知,即可一键触发并聚合结果。
三 任务依赖与结果联动
- 在“前驱任务”的“构建后操作”勾选 其他工程后构建,按需选择触发条件:
- 只有稳定时触发(前驱成功);
- 即使构建失败也触发(前驱失败);
- 即使构建不稳定也触发(前驱不稳定)。
- 示例:编译完成后无论成功或失败都触发冒烟测试,或仅在不稳定时触发专项回归。
四 分布式与资源优化建议
- 节点与标签:添加多个 Agent,为节点打上如 linux、docker、gpu 等标签;在 Job 配置中使用 Restrict where this project can be run 或 node(‘label’) 精准调度,提高吞吐与隔离性。
- Executors 规划:单机并发数建议不超过 CPU 物理核心数;I/O 密集可适当增加,但要避免内存争用。
- 性能优化:开启 依赖缓存(如 Maven/Gradle)、精简构建步骤、优化网络、必要时调整 JVM 参数,以提升并行效率与稳定性。