Runner 标签怎么用
用标签把作业调度到合适的执行器:Linux 构建机、macOS 打包机、GPU 节点、受控发布机各取所需。标签匹配不上时作业会一直排队而不是失败,这是排查作业不动时的第一个检查点;未声明标签的作业可能被任意 Runner 领取,专用机器务必打专属标签并在作业里声明。
基本信息
| GitLab | 作业 tags 匹配 Runner 注册时登记的标签 |
|---|---|
| GitHub | runs-on 指定标签,self-hosted 加自定义标签 |
| Jenkins | agent 的 label 支持逻辑表达式 |
| 失败形态 | 匹配不上时排队等待,而不是立即失败 |
| 隔离 | 共享 Runner 上多项目互相干扰,重要作业用专属标签 |
典型使用场景
- 专用平台:macOS 打 iOS 包、Windows 打安装包。
- GPU 任务:模型训练与推理作业。
- 环境隔离:生产发布只由受控机器执行。
- 容量分层:大内存任务调度到大机型。
- 就近构建:按区域标签减少依赖拉取时间。
GitLab
GitLab
build:
tags: [linux, docker]
script: make buildGitHub
GitHub
runs-on: [self-hosted, linux, x64]平台对照
| 平台 | 字段 | 说明 |
|---|---|---|
| GitLab | tags | 匹配 Runner 注册标签 |
| GitHub | runs-on | self-hosted 加自定义标签 |
| Jenkins | agent label | 支持逻辑表达式组合 |
未声明标签的作业可能被任意 Runner 领取;专用构建机务必打专属标签并在作业中声明。
标签规划要有文档:机器注册按规范打标,避免拼写与含义漂移。
标签能匹配多个 Runner 时作业随机落入其一,敏感作业要收紧匹配范围。
标签之外还有运行器组:平台的执行器分组与项目可见性控制谁能使用哪些机器,双层配合更严格。
容量核对:专用机器的并发度决定排队长度,标签正确但数量不够同样会堵。
预留与回退:关键任务要有备用机器或降级策略,单点机器故障时流程不中断。
监控排队时长:按标签统计等待时间,先分清是机器不足还是匹配规则问题。