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

同一GitLab项目配置两个CI Runner仅触发一个的问题

解决GitLab CI仅触发单个Runner的问题

听起来你遇到的是GitLab CI Runner触发逻辑不符合预期的问题——明明配置了OSX和Windows两个Runner,却每次只有一个执行任务,得禁用一个另一个才会启动。这通常是标签匹配或者CI配置文件的问题,咱们一步步来排查解决:

1. 检查Runner的标签配置

先去项目的CI/CD设置里查看两个Runner的标签:

  • 确保OSX Runner带有osx/macos这类专属标签
  • Windows Runner带有windows专属标签
    如果两个Runner的标签完全重复(或者都没设置标签),GitLab会随机挑选一个Runner执行任务,这就会出现你说的“仅触发一个”的情况。

2. 修改.gitlab-ci.yml配置,让Job同时触发多平台Runner

你的CI配置文件需要明确指定对应平台的Job,才能让两个Runner同时工作,这里提供两种常见的配置方式:

方式一:拆分多平台独立Job

stages:
  - build

# 触发OSX Runner的Job
build-osx:
  stage: build
  tags:
    - osx  # 匹配OSX Runner的标签
  script:
    - 你的OSX编译命令

# 触发Windows Runner的Job
build-windows:
  stage: build
  tags:
    - windows  # 匹配Windows Runner的标签
  script:
    - 你的Windows编译命令

推送代码后,两个Job会分别触发对应的Runner,实现并行执行。

方式二:用矩阵并行简化配置(适合编译逻辑相近的场景)

如果两个平台的编译命令差异不大,可以用变量+并行矩阵来简化配置:

stages:
  - build

build:
  stage: build
  parallel:
    matrix:
      - RUNNER_TAG: osx
        BUILD_CMD: "make build-osx"
      - RUNNER_TAG: windows
        BUILD_CMD: "build.bat"
  tags:
    - $RUNNER_TAG
  script:
    - $BUILD_CMD

这种方式也能让两个Runner同时启动对应任务。

3. 检查Runner的项目锁定与未标记任务设置

确认两个Runner的配置:

  • 都设置为锁定到当前项目(Runner设置里的「Locked」选项),避免被其他项目占用
  • 不要同时开启「Run untagged jobs」,如果你的Job没指定标签,GitLab会优先选择第一个可用的未标记Runner,导致只有一个触发

4. 确认Runner的并发数配置

每个Runner的config.toml文件里有concurrent参数,默认值为1,代表该Runner同一时间只能执行一个Job。这个参数不影响两个不同Runner的并行触发,但确保两个Runner的concurrent值至少为1(默认就是)即可。

按照上面的步骤排查调整,大概率是标签匹配或者CI配置未指定多平台Job的问题,调整后应该就能同时触发两个Runner了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:28:18