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

GitLab Runner Shell执行器多服务器同时运行作业配置问题

问题

我在3台服务器上安装了GitLab Runner,将其配置为Shell执行器,这些Runner均为特定Runner而非共享Runner,未使用标签。我的需求是让.gitlab-ci.yml中的指令在3台服务器上同时执行,当前使用的模板yaml如下:

stages:
  - test
test:
  stage:
    - hostname

但执行该yaml时,仅会在其中一台服务器上运行,再次触发Runner才会在另一台服务器执行。请问Shell执行器是否支持实现该需求?该如何配置?是否需要更换实现方式?

注:发布此问题后,我尝试了标签方法:注册Runner时为各服务器设置专属标签,并在gitlab-ci.yaml中使用这些标签指定作业运行目标。此方法虽能让作业在对应标签的服务器上运行,但无法实现同时执行,还会导致gitlab-ci.yaml中出现大量重复代码(因为我在各服务器上的操作大多相同)。

解决方案

Shell执行器完全支持你的需求,不需要更换执行器,以下是两种高效的配置方式:

方式一:统一标签+parallel关键字

  1. 给3台服务器上的Runner设置同一个标签(比如shell-runner-cluster),确认它们都是目标项目的特定Runner且处于启用状态。
  2. 在.gitlab-ci.yml中通过parallel指定并行数量,结合标签匹配这组Runner:
stages:
  - test

test:
  stage: test
  tags:
    - shell-runner-cluster
  parallel: 3
  script:
    - hostname

配置完成后,GitLab会自动在3台Runner上同时触发该作业,全程无需重复编写代码。

方式二:matrix参数批量生成并行作业

如果后续需要扩展服务器或做轻微差异化操作,可使用matrix参数定义服务器标识,搭配统一标签实现并行:

stages:
  - test

test:
  stage: test
  tags:
    - shell-runner-cluster
  parallel:
    matrix:
      - SERVER: ["node-1", "node-2", "node-3"]
  script:
    - hostname
    # 若需要,可通过$SERVER变量执行差异化逻辑

这种方式同样能实现3台服务器同时执行作业,且配置简洁易维护。

关键配置检查

  • 确保每台Runner的config.toml中concurrent值至少为1,且没有被其他作业占用资源,保证能同时接收任务。
  • 确认特定Runner仅关联目标项目,避免被其他项目占用导致并行失效。

内容的提问来源于stack exchange,提问作者G.Baysec

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:52:14