温馨提示×

centos jenkins如何并发

小樊
44
2026-09-30 10:37:31
栏目: 智能运维

在 CentOS 上使用 Jenkins 实现“并发”,通常有以下几种常见场景和做法,我按最常用 → 进阶给你说明,你可以按需选择。


一、Jenkins 任务本身并发(最常用)

1️⃣ 同一个 Job 同时跑多个构建

适合:参数化构建、多环境/多版本测试

步骤:

  1. 打开 Jenkins Job
  2. 勾选 「允许并发构建」(Allow concurrent builds)
  3. 保存

✅ 效果:
多个用户或触发器可以同时跑这个 Job,互不影响

⚠ 注意:

  • 需要构建目录隔离(如 ${WORKSPACE} 不冲突)
  • 如果是 shell 操作同一文件,要自己加锁

二、多个 Agent(节点)并发执行(推荐)

2️⃣ 使用 Jenkins Agent(Slave)横向扩展

架构

Jenkins Master (CentOS)
 ├── Agent-1 (CentOS)
 ├── Agent-2 (CentOS / Docker)
 └── Agent-3 (Windows)

添加 Agent(CentOS)

# 在被控机
useradd jenkins
passwd jenkins

# 安装 Java
yum install -y java-11-openjdk

Jenkins UI:

  • Manage Jenkins → Nodes → New Node
  • 设置:
    • 并发数(# of executors)
    • 远程工作目录
    • 启动方式(SSH)

✅ 效果:
多个 Job / 同一 Job 可在不同 Agent 上真正并行


三、Pipeline 中并发(最灵活)

3️⃣ Jenkinsfile 使用 parallel

pipeline {
    agent any
    stages {
        stage('Build') {
            parallel {
                stage('Linux') {
                    steps {
                        sh 'make linux'
                    }
                }
                stage('Windows') {
                    agent { label 'windows' }
                    steps {
                        bat 'make windows'
                    }
                }
            }
        }
    }
}

✅ 常用于:

  • 多平台编译
  • 单元测试 + 静态扫描
  • 多微服务并行部署

四、Docker + Jenkins 并发(高并发方案)

4️⃣ 使用 Docker Agent 动态并发

pipeline {
    agent {
        docker { image 'maven:3.8' }
    }
    stages {
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
    }
}

配合:

  • Docker Plugin
  • Kubernetes Plugin(大规模并发)

✅ 适合:

  • CI 高密度并发
  • 每次构建干净环境

五、系统层面并发优化(CentOS)

5️⃣ 提升 Jenkins 并发能力

# 增加 Jenkins 执行线程
vi /etc/sysconfig/jenkins
JENKINS_JAVA_OPTIONS="-Xmx4g"
# 调整文件描述符
ulimit -n 65535

六、常见并发坑(重点)

❌ 共享目录冲突
✅ 使用 ${BUILD_NUMBER} 隔离

❌ 同一端口被占用
✅ Docker / 多 Agent

❌ Master 跑太多任务
✅ Master 只调度,Agent 执行


七、你可以告诉我

为了给你更精准的方案,可以补充:

  1. Jenkins 版本?
  2. 是 Job 并发 / 节点并发 / Pipeline 并发?
  3. 是否使用 Docker / K8s?
  4. 并发目的是什么(测试 / 部署 / 编译)?

我可以直接给你 可用配置或 Jenkinsfile。

0 踩