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

如何在GitLab CI/CD中实现类似Jenkins锁定资源的功能?

GitLab CI/CD独占物理测试资源的替代方案

1. 用Runner标签+单并发控制

给连接测试板的Runner打上统一标签(比如mcu-test-board),然后在测试作业里指定这个标签。接着去GitLab项目的CI/CD设置里,把带这个标签的Runner的并发数设为1——这样同一时间只会有一个作业占用这个Runner,相当于间接锁定了对应的测试板。

  • 优势:配置简单,不用额外工具;如果有多块测试板,给不同Runner打不同标签就能扩展。
  • 示例CI配置:
hardware_test:
  stage: test
  tags:
    - mcu-test-board
  script:
    - ./execute-mcu-tests.sh

2. 用共享存储的文件锁

如果你的Runner能访问同一个共享存储(比如NFS共享目录、同一台机器的本地磁盘),可以用flock命令实现原子锁,让测试作业先拿到锁再执行测试脚本:

hardware_test:
  stage: test
  script:
    - flock /shared/mcu-test.lock ./execute-mcu-tests.sh
  • 注意:要保证所有需要访问测试板的Runner都能读写这个锁文件路径,权限要设置正确。

3. 用GitLab CI的resource_group特性

GitLab CI自带resource_group功能,给所有需要独占测试板的作业指定同一个资源组,同一资源组下的作业会自动串行执行,不用管跑在哪个Runner上。

  • 优势:最灵活,不需要绑定特定Runner;企业版还支持跨项目复用资源组。
  • 示例CI配置:
hardware_test:
  stage: test
  resource_group: exclusive_mcu_test
  script:
    - ./execute-mcu-tests.sh

关于你提到的Runner绑定方案

这个方案完全可行,但扩展性弱——每加一块测试板就得新增一个绑定的Runner。上面的方案1和3更适合长期维护,尤其是resource_group,不用操心Runner和硬件的绑定关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:33:16