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

Jenkins:基于机器工作空间可用性的并发构建限流需求

解决方案:基于机器工作空间的Jenkins构建限流与固定工作空间配置

核心配置思路

要实现同一机器的W1工作空间同一时间仅允许一个任务执行,同时避免Jenkins自动创建新工作空间,需要从「固定工作空间路径」和「基于节点+工作空间的互斥锁」两个维度配置。

1. 强制固定工作空间,禁用自动创建新空间

在所有任务的配置页面中:

  • 找到高级项目选项,勾选「Use custom workspace」;
  • 在「Directory」输入框中填写固定路径:${JENKINS_HOME}/workspace/W1;
  • 保存配置。
    这样所有任务都会复用指定的W1工作空间,不会因任务名不同自动生成W2、W3等新工作空间。

2. 用Lockable Resources插件实现节点级工作空间互斥

通过Lockable Resources Plugin为每台机器的W1工作空间创建独立锁资源,确保同一节点上的任务串行执行:

步骤1:安装插件

在Jenkins的「Manage Jenkins -> Plugins」中搜索并安装Lockable Resources Plugin,重启Jenkins生效。

步骤2:定义锁资源

进入「Manage Jenkins -> Configure System -> Lockable Resources」:

  • 点击「Add Lockable Resource」,为每台机器创建对应的锁:
    • 名称:B1-W1(对应机器B1的W1工作空间,以此类推创建B2-W1、B3-W1);
    • 描述:可填写「B1节点W1工作空间互斥锁」便于识别;
  • 保存配置。

步骤3:任务中配置锁

在每个任务的配置页面:

  • 找到Build Environment,勾选「Lock resources」;
  • 在「Resources to lock」输入框中填写:${NODE_NAME}-W1;
    • 这里${NODE_NAME}是Jenkins节点的内置变量,会自动匹配任务运行的机器名(B1/B2/B3),无需为每个任务单独指定锁名称;
  • 保存配置。

3. 效果验证

  • J1在B1触发:正常运行,B1-W1锁被占用;
  • J2在B2触发:正常运行,B2-W1锁可用;
  • J1在B3触发:正常运行,B3-W1锁可用;
  • J2在B1触发:进入等待队列,直到B1上的J1执行完成、B1-W1锁释放后才会启动。

注意事项

  • 所有任务必须统一配置自定义工作空间路径,避免遗漏导致自动创建新空间;
  • 新增机器时,只需在Lockable Resources中添加对应新机器名-W1的锁资源,任务配置无需修改;
  • 如果需要批量配置任务,可使用Jenkins的批量配置工具或脚本简化操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:36:12