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

如何配置GitLab-CI:主Runner忙碌/不可用时自动使用共享Runner?

GitLab-CI实现Runner优先级调度方案

你遇到的问题是因为GitLab CI的tags数组默认是逻辑与关系,要求Runner必须同时拥有所有指定标签才会执行作业,所以你的配置找不到符合条件的Runner,导致作业无法运行。完全可以实现主Runner优先、忙时/不可用时自动切换到共享Runner的需求,以下是两种可行方案:

方案一:使用标签OR表达式(GitLab 13.10+支持)

直接用表达式指定标签的逻辑或关系,同时给主Runner设置更高优先级确保优先调度:

stages:
  - build
build-job:
  stage: build
  # 满足其中一个标签即可匹配
  tags:
    - "first-runner" || "shared-runner"
  script:
    - sleep 150

额外配置:设置Runner优先级

在GitLab项目的「Settings > CI/CD > Runners」中,找到你的主Runner,编辑并设置更高的优先级数值(默认值为0,数值越大优先级越高)。这样当两个Runner都空闲时,会优先分配主Runner;当主Runner忙碌或不可用时,作业会自动分配到共享Runner。

方案二:拆分作业实现回退(兼容旧版本GitLab)

如果你的GitLab版本低于13.10,不支持标签表达式,可以拆分两个作业,通过依赖逻辑实现回退:

stages:
  - build
  - fallback-build

# 主作业:优先使用主Runner
build-job-primary:
  stage: build
  tags:
    - first-runner
  script:
    - sleep 150
  # 允许主作业失败,不中断流水线
  allow_failure: true

# 回退作业:仅当主作业失败时触发(主Runner忙/不可用)
build-job-fallback:
  stage: fallback-build
  tags:
    - shared-runner
  script:
    - sleep 150
  # 依赖主作业,但不等待 artifacts
  needs:
    - job: build-job-primary
      artifacts: false
      optional: true
  # 仅在主作业失败时执行
  only:
    - failed: build-job-primary

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:12:50