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内置调度器默认会按照以下规则分配任务:
- 首先筛选所有标签匹配、未达到最大并发上限的可用Runner
- 优先级相同的情况下,优先调度到当前运行任务数最少的Runner
无需额外编写自定义调度逻辑,即可完全匹配你的需求:
- 某Runner已经跑满2个任务时,会被自动排除,新任务调度到其他未占满的Runner
- 存在完全空闲的Runner时,会优先调用完全空闲的Runner执行任务,不会分配给已经在运行1个任务的Runner
内容的提问来源于stack exchange,提问作者Rajarshi Das
相关产品推荐
相关产品推荐

