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

如何让Jenkins同Pipeline任务同时运行在不同EC2节点?

解决Jenkins Pipeline无法在EC2云节点并发构建的问题

核心排查与配置步骤

1. 确认EC2云节点基础配置

  • 进入Manage Jenkins → Clouds → Amazon EC2,检查对应云配置的Instance Cap(实例上限)是否设置为2,确保Jenkins允许启动两台EC2实例。
  • 检查节点模板的Number of executors是否为1,保证每个EC2实例仅能运行一个构建任务。

2. 修正Throttle Concurrent Builds插件配置

该插件未生效大概率是配置逻辑错误,正确设置如下:

  • 进入目标Pipeline任务的配置页面,勾选Throttle concurrent builds。
  • 设置Max total concurrent builds为2,允许该任务同时运行2个构建。
  • 设置Max concurrent builds per node为1,强制每个节点仅能运行一个该任务的构建实例。
  • 无需勾选Throttle builds matching an expression(除非有特定表达式匹配需求),保持默认针对当前任务的限制规则。

3. 检查Pipeline的Agent配置

确保Pipeline脚本没有强制复用节点的逻辑:

  • 声明式Pipeline正确写法示例:
pipeline {
    agent {
        label 'your-ec2-target-label'
    }
    stages {
        stage('Execute') {
            steps {
                // 你的构建步骤
            }
        }
    }
}

不要添加reuseNode: true(默认值为false,会强制调度新节点),也不要绑定固定自定义工作空间导致节点复用。

  • 脚本式Pipeline直接使用node('your-ec2-target-label') { ... },该语法默认请求符合标签的可用节点,若当前无空闲执行器则触发新EC2实例创建。

4. 定位队列等待原因

触发两次构建后,查看Jenkins的Build Queue,观察第二个任务的等待原因:

  • 如果显示Waiting for provisioning of new node:说明Jenkins正在尝试启动新EC2实例,可能是实例启动较慢,等待即可。
  • 如果显示Waiting for next available executor on [node-name]:说明Jenkins认为当前没有符合标签的可用节点/实例,需检查:
    • EC2云节点模板的标签与Pipeline指定的标签是否完全匹配。
    • 全局Manage Jenkins → Configure System中,主节点的执行器数是否设为0,避免任务被调度到主节点而非EC2云节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:32:52