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

如何实现GitLab Runner并行运行且单Runner同一时间仅执行一个任务

解决GitLab Runner专属仓库单任务并发配置问题

核心配置方案

要实现每个专属Runner同一时间仅执行1个任务、不同仓库任务可并行的需求,需结合全局并发限制和单个Runner的任务限制,同时确保标签配置准确:

  1. 全局并发数设置
    修改Runner节点的config.toml文件顶部的concurrent值为6(对应你的6个Runner数量),这会允许该节点最多同时执行6个任务,刚好满足每个Runner各跑1个的并行需求:

    concurrent = 6
    check_interval = 0
    
    [session_server]
      session_timeout = 1800
    
  2. 单个Runner的任务限制
    在每个Runner的[[runners]]配置块中添加limit = 1,强制该Runner同一时间只能处理1个任务,同时给每个Runner设置唯一的专属标签,示例:

    [[runners]]
      name = "Repo1专属Runner"
      url = "https://你的GitLab实例地址/"
      token = "你的Runner令牌"
      executor = "shell" # 替换为你实际使用的执行器(如docker)
      limit = 1 # 关键:限制该Runner同时仅运行1个任务
      [runners.tags]
        - "repo1-exclusive"
    

    对6个Runner重复此配置,每个Runner使用不同的标签名(如repo2-exclusive、repo3-exclusive等)。

  3. 仓库CI/CD任务绑定
    在每个仓库的.gitlab-ci.yml中,指定任务仅使用对应标签的Runner,确保任务不会分配到其他Runner:

    build:
      tags:
        - repo1-exclusive
      script:
        - # 你的任务脚本
    

常见问题排查

如果之前的配置组合未生效,大概率是以下原因:

  • 全局concurrent值设置过小(比如设为1),导致整个节点只能同时跑1个任务,所有Runner都要排队;
  • 单个Runner未配置limit = 1,导致该Runner会同时处理多个同仓库的任务;
  • 标签配置重复或未正确绑定,任务被分配到了非专属Runner上。

验证方法

重启GitLab Runner服务后,同时给不同仓库触发多个任务:

  • 同一个仓库的多个任务应该处于排队状态,前一个完成后才会启动下一个;
  • 不同仓库的任务会同时执行,互不等待。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:32:43