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

GitLab如何使用并切换高可用群组runner,自动选择空闲执行器运行CI任务

GitLab CI 自动调度空闲Runner配置方案

1. 先完成Runner侧配置(必须)

  • 登录每个Runner所在的服务器,编辑Runner配置文件/etc/gitlab-runner/config.toml(Linux默认路径),将对应Runner的concurrent参数设置为2,匹配你要求的单Runner最大同时运行2个任务的上限。
  • 给3个Runner都添加同一个通用标签,比如my-project-common-runner,可以在GitLab项目后台「设置」->「CI/CD」->「Runner」页面编辑Runner属性添加标签,也可以在注册Runner时指定。
  • 确保3个Runner都已绑定到你的项目,配置「运行未标记的作业」为关闭(避免接其他无关任务),三个Runner的权重设置为相同值(比如都是10,确保调度时优先选负载最低的)。

2. 修改项目.gitlab-ci.yml配置

只需要给你的job新增tags字段,指定上面设置的通用标签即可,修改后的完整配置如下:

stages:          # Runs First - Anything that needs to run prior to your scripts running
  - deploy
  - Script

variables:
  Domain:
    value: "dom"
  HOST_NAME:
    value: ""  
  JAVA_FILES_WITH_ARGS:
    value: ""

Run Python:
  stage: deploy
  tags:
    - my-project-common-runner
  script:  (./script.sh Git=True Cron=False Detail=NA)

实现逻辑说明

GitLab CI内置调度器默认会按照以下规则分配任务:

  1. 首先筛选所有标签匹配、未达到最大并发上限的可用Runner
  2. 优先级相同的情况下,优先调度到当前运行任务数最少的Runner

无需额外编写自定义调度逻辑,即可完全匹配你的需求:

  • 某Runner已经跑满2个任务时,会被自动排除,新任务调度到其他未占满的Runner
  • 存在完全空闲的Runner时,会优先调用完全空闲的Runner执行任务,不会分配给已经在运行1个任务的Runner

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:36:07