GitLab Runner配置:如何让每个Runner仅执行单个任务,其余任务排队
问题分析与解决方案
核心问题根源
你用同一个config.toml同时管理3台Mac的GitLab Runner是错误的。GitLab Runner是单机器运行的进程,一个config.toml对应一台机器上的Runner实例。你当前的操作是在其中一台Mac上启动了3个Runner进程,另外两台Mac根本没有运行Runner服务,所有任务都会被分配到这一台机器的3个Runner,导致资源冲突,出现同一Runner跑多任务、其他机器Runner空闲的异常。
正确配置方案
1. 拆分配置文件
每台Mac单独维护自己的config.toml,每个文件仅包含一个[[runners]]区块,不要把多台机器的Runner配置混在一起。
2. 修正参数配置
注意:concurrent是全局参数(不属于单个[[runners]]),控制当前机器上Runner进程能同时执行的任务总数;limit是单个Runner的参数,控制该Runner最多承接的任务数。
单台Mac的正确config.toml示例:
# 全局配置:当前机器上所有Runner实例的并发执行上限 concurrent = 1 check_interval = 0 [session_server] session_timeout = 1800 [[runners]] name = "Mac Runner 1" url = "https://your-gitlab-instance.com/" token = "该Runner专属的令牌" executor = "shell" # 限制该Runner最多承接1个任务 limit = 1 [runners.cache] [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure]
另外两台Mac的配置文件以此类推,替换name和对应的token即可。
3. 单独启动Runner服务
每台Mac上分别启动GitLab Runner服务,确保3个Runner在GitLab后台都显示为在线状态。
验证效果
启动6个任务时,3台Mac的Runner会各执行1个任务,剩余3个任务进入队列,待任意Runner空闲后自动承接执行,符合你的预期。
内容的提问来源于stack exchange,提问作者Алексей Ванюшин
相关产品推荐
相关产品推荐

