首页/开发/CI/CD 与发布速查/Runner 标签与作业分发
流水线设计54 条

Runner 标签与作业分发

用标签把作业精确调度到合适执行器:Linux 构建机、macOS 打包机、GPU 节点各取所需。

CI/CD 与发布速查开发更新于 2026-10-13

Runner 标签怎么用

用标签把作业调度到合适的执行器:Linux 构建机、macOS 打包机、GPU 节点、受控发布机各取所需。标签匹配不上时作业会一直排队而不是失败,这是排查作业不动时的第一个检查点;未声明标签的作业可能被任意 Runner 领取,专用机器务必打专属标签并在作业里声明。

基本信息

GitLab作业 tags 匹配 Runner 注册时登记的标签
GitHubruns-on 指定标签,self-hosted 加自定义标签
Jenkinsagent 的 label 支持逻辑表达式
失败形态匹配不上时排队等待,而不是立即失败
隔离共享 Runner 上多项目互相干扰,重要作业用专属标签

典型使用场景

  • 专用平台:macOS 打 iOS 包、Windows 打安装包。
  • GPU 任务:模型训练与推理作业。
  • 环境隔离:生产发布只由受控机器执行。
  • 容量分层:大内存任务调度到大机型。
  • 就近构建:按区域标签减少依赖拉取时间。

GitLab

GitLab
build:
  tags: [linux, docker]
  script: make build

GitHub

GitHub
runs-on: [self-hosted, linux, x64]

平台对照

平台字段说明
GitLabtags匹配 Runner 注册标签
GitHubruns-onself-hosted 加自定义标签
Jenkinsagent label支持逻辑表达式组合
未声明标签的作业可能被任意 Runner 领取;专用构建机务必打专属标签并在作业中声明。
标签规划要有文档:机器注册按规范打标,避免拼写与含义漂移。
标签能匹配多个 Runner 时作业随机落入其一,敏感作业要收紧匹配范围。
标签之外还有运行器组:平台的执行器分组与项目可见性控制谁能使用哪些机器,双层配合更严格。
容量核对:专用机器的并发度决定排队长度,标签正确但数量不够同样会堵。
预留与回退:关键任务要有备用机器或降级策略,单点机器故障时流程不中断。
监控排队时长:按标签统计等待时间,先分清是机器不足还是匹配规则问题。

易错点

  • 标签拼写不一致导致作业永远排队:先小步试跑验证分发。
  • 共享 Runner 上跑多项目:缓存、临时目录与凭据可能相互干扰,重要作业用专属标签隔离。
  • 标签匹配多个 Runner:敏感作业被随机调度到非受控机器。
  • 排队原因不可见:作业长时间不动先查标签匹配,再查并发与容量。
  • 标签随意增加:语义混乱,调度结果依赖注册顺序。
  • 发布机与构建机共用:构建任务抢占发布资源,关键操作排队。

数据来源与参考

  • GitLab Docs《Runner tags》
  • GitHub Docs《Using self-hosted runners》
  • Jenkins Handbook《Using agents》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌