界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
开发与工程 · SKILL.md

glab-runner

glab-runner

【开发与工程】管理 GitLab CI/CD Runner(运行器)——列出、分配、取消分配、暂停和删除项目、群组或实例级别的 Runner。适用于查看 Runner 状态、将 Runner 分配给项目、临时暂停 Runner 或移除已退役的 Runner。触发词:runner、glab runner、列出 runner、分配 runner、取消分配 runner、暂停 runner、删除 runner、CI runner。

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: glab-runner description: 管理 GitLab CI/CD Runner(运行器)——列出、分配、取消分配、暂停和删除项目、群组或实例级别的 Runner。适用于查看 Runner 状态、将 Runner 分配给项目、临时暂停 Runner 或移除已退役的 Runner。触发词:runner、glab runner、列出 runner、分配 runner、取消分配 runner、暂停 runner、删除 runner、CI runner。

glab runner

通过命令行管理 GitLab CI/CD Runner(运行器)。

glab v1.87.0 新增

快速入门

# 列出当前项目的 Runner
glab runner list

# 暂停一个 Runner
glab runner pause <runner-id>

# 删除一个 Runner
glab runner delete <runner-id>

常见工作流

列出 Runner

# 列出当前项目的所有 Runner
glab runner list

# 列出指定项目的 Runner
glab runner list --repo owner/project

# 列出所有 Runner(实例级别,仅管理员可用)
glab runner list --all

# 以 JSON 格式输出
glab runner list --output json

# 分页查看
glab runner list --page 2 --per-page 50

JSON 输出解析示例:

# 查找所有已暂停的 Runner
glab runner list --output json | python3 -c "
import sys, json
runners = json.load(sys.stdin)
paused = [r for r in runners if r.get('paused')]
for r in paused:
    print(f\"{r['id']}: {r.get('description','(no description)')} — {r.get('status')}\")
"

暂停 Runner

暂停 Runner 可以阻止它接收新作业,但不会将其移除。

# 暂停 Runner 123
glab runner pause 123

# 在指定项目上下文中暂停
glab runner pause 123 --repo owner/project

适合暂停的场景:

  • 维护窗口期(更新、重启)
  • 排查故障 Runner
  • 临时减少 Runner 容量
  • 退役前(先确认没有正在运行的作业)

删除 Runner

# 删除(会有确认提示)
glab runner delete 123

# 跳过确认直接删除
glab runner delete 123 --force

# 在指定项目上下文中删除
glab runner delete 123 --repo owner/project

⚠️ 删除操作不可恢复。 如果不确定,请先暂停。

决策树:暂停 vs 删除

是否需要永久移除该 Runner?
├─ 否 → 暂停它(可恢复)
└─ 是 → 它当前是否正在运行作业?
          ├─ 是 → 先暂停,等作业完成后再删除
          └─ 否 → 使用 --force 直接删除

Runner 状态参考

状态含义
online已连接,准备接收作业
offline未连接(检查 Runner 进程)
paused已连接但不接收新作业
stale最近 3 个月无通信

故障排查

"runner: command not found":

  • 需要 glab v1.87.0 或更高版本。使用 glab version 检查。

实例级别 Runner 出现 "Permission denied":

  • 实例级别的 Runner 管理需要 GitLab 管理员权限。
  • 项目 Runner 可以由项目维护者管理。

Runner 无法暂停:

  • 使用 glab runner list 确认 Runner ID。
  • 检查权限(至少需要项目的 Maintainer 角色)。

暂停后 Runner 仍显示 "online":

  • Runner 进程仍在主机上运行——只是不再接收新作业。
  • 这是正常现象。如需完全停止,请通过 SSH 登录 Runner 主机并停止进程。

无法删除 Runner:

  • Runner 可能是共享/群组级别的(需要更高权限)。
  • 检查 Runner 是否被分配给多个项目;从一个项目移除可能需要项目级别删除而非实例级别删除。

为项目分配/取消分配 Runner(v1.88.0+)

将已有的 Runner 分配给项目,使其可以接收作业:

# 将 Runner 分配给当前项目
glab runner assign <runner-id>

# 分配给指定项目
glab runner assign <runner-id> --repo owner/project

从项目中移除 Runner(不会删除该 Runner):

# 从当前项目取消分配
glab runner unassign <runner-id>

# 从指定项目取消分配
glab runner unassign <runner-id> --repo owner/project

注意: 分配/取消分配 Runner 至少需要项目的 Maintainer 角色。这与 glab runner delete(永久删除 Runner)不同。

相关技能

  • glab-runner-controller — 管理 Runner 控制器和编排(仅管理员,实验性功能)
  • glab-ci — 查看和管理 CI/CD 流水线与作业
  • glab-job — 重试、取消、追踪单个作业的日志

v1.88.0 变更

  • 新增 glab runner assign <runner-id> — 将 Runner 分配给项目
  • 新增 glab runner unassign <runner-id> — 从项目取消分配 Runner

命令参考

glab runner <command> [--flags]

Commands:
  list      Get a list of runners available to the user
  assign    Assign a runner to a project (v1.88.0+)
  unassign  Unassign a runner from a project (v1.88.0+)
  pause     Pause a runner
  delete    Delete a runner

Flags (list):
  --all          List all runners (instance-level, admin only)
  --output       Format output as: text, json
  --page         Page number
  --per-page     Number of items per page
  --repo         Select a repository
  -h, --help     Show help

Flags (pause / delete):
  --force        Skip confirmation prompt (delete only)
  --repo         Select a repository
  -h, --help     Show help
我的收藏