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

如何配置Jenkins Multijob并行运行指定节点的Job A与Job B?

Hey,刚好我之前帮团队配置过类似的Jenkins Multijob场景,咱们一步步来搞定这个需求:

一、先创建Multijob主项目

首先得新建一个Multijob类型的项目,这是实现并行执行的基础:

  • 登录Jenkins,点击「New Item」,输入项目名称(比如Parallel_JobA_JobB),选择「Multijob Project」,点击「OK」进入配置页面。
  • 如果需要保留参数化的灵活性(比如后续要调整节点),可以先在「This project is parameterized」区域添加参数,不过咱们先从最直接的固定节点配置讲起。
二、配置并行执行阶段

Multijob的核心是Build Phases,咱们需要添加一个并行阶段让Job A和Job B同时跑:

  • 在「Build Phases」区域,点击「Add phase」,选择「Parallel Phase」,给这个阶段起个直观的名字(比如Run_JobA_JobB_Parallel)。
  • 进入这个并行阶段后,点击「Add build step」,选择「Job」,然后在「Job name」下拉框里选你的Job A;再重复一次这个操作,添加Job B到同一个并行阶段里。这样两个任务就会被同时触发。
三、给每个子任务指定专属运行节点

这部分分两种场景,你可以根据自己的需求选:

场景1:节点固定,直接在子任务里配置(推荐)

如果Job A和Job B的运行节点是固定的,直接在子任务里限制节点最省心:

  1. 配置Job A:
    • 打开Job A的配置页面,找到「General」区域,勾选「Execute concurrent builds if necessary」(允许并发构建,这样才能在3台节点同时跑)。
    • 往下找到「Restrict where this project can be run」并勾选,在「Label expression」里输入你要让Job A运行的3台slave:
      • 如果你给这3台slave打了统一标签(比如slave-group-a),直接输入slave-group-a就行;
      • 没打标签的话,用逻辑或写节点名:slave-node-1 || slave-node-2 || slave-node-3。
  2. 配置Job B:
    • 用同样的方法,勾选「Execute concurrent builds if necessary」,然后在「Restrict where this project can be run」里输入它的3台slave标签(比如slave-group-b)或者节点名逻辑或。

配置完子任务后,回到Multijob的并行阶段,不需要额外设置节点,触发Multijob时,Job A会自动在它的3台节点并行跑,Job B在自己的3台节点跑,两者同时执行。

场景2:需要动态调整节点,用参数传递

如果后续可能要调整Job A/B的运行节点,不想每次改子任务配置,可以用Multijob传递参数:

  1. 在Multijob的配置页面,「This project is parameterized」区域添加两个Node Parameter:
    • 第一个命名为NODE_GROUP_A,在「Node choices」里选择Job A要跑的3台slave;
    • 第二个命名为NODE_GROUP_B,选择Job B要跑的3台slave。
  2. 配置Job A:
    • 勾选「Execute concurrent builds if necessary」,然后在「Restrict where this project can be run」的「Label expression」里输入${NODE_GROUP_A}(引用Multijob传递的参数)。
  3. 配置Job B:
    • 同理,Label expression填${NODE_GROUP_B},勾选并发构建。
  4. 回到Multijob的并行阶段,添加Job A/B时,在「Parameters」区域选择「Current build parameters」,这样Multijob的参数就会传递给子任务,子任务根据参数指定的节点运行。
几个注意事项
  • 确保Jenkins已经安装了Multijob Plugin和Node Label Parameter Plugin(如果用场景2的参数化方法);
  • 检查slave节点的状态,确保它们在线且有足够的资源(比如空闲 executor);
  • 给slave打标签比直接写节点名更灵活,后续添加/移除节点只需要调整标签就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:22:16