mcpField
G
glab-runner

glab-runner

github.com/vince-winkintel云与 DevOps49110 次安装1 天前更新
代码仓库

关于 glab-runner

用于通过命令行管理 GitLab CI/CD runner 的技能,涵盖查看和检查 runner、更改其状态、分配到项目以及删除。

主要功能

  1. 01列出项目和实例 runner
  2. 02暂停或恢复 runner
  3. 03查看 runner 的作业和管理器
  4. 04为项目分配或取消分配 runner
  5. 05删除 runner

适用场景

  1. 01维护期间暂停 runner
  2. 02更改 runner 状态前检查作业
  3. 03将 runner 关联到项目
  4. 04移除不再需要的 runner

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vince-winkintel/gitlab-cli-skills --skill glab-runner

安装后在 Claude Code 中输入/glab-runner确认已加载。

详细介绍

glab runner

从命令行管理 GitLab CI/CD Runner。

快速入门

# List runners for current project
glab runner list

# Pause a runner
glab runner update <runner-id> --pause

# Delete a runner
glab runner delete <runner-id>

常见工作流

列出 Runner
# List all runners for current project
glab runner list

# List for a specific project
glab runner list --repo owner/project

# List all runners (instance-level, admin only)
glab runner list --instance

# Output as JSON
glab runner list --output json

# Paginate
glab runner list --page 2 --per-page 50

示例 JSON 输出解析:

# Find all paused runners
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 可阻止其接收新任务,但不会将其移除。

# Pause runner 123
glab runner update 123 --pause

# Resume a paused runner
glab runner update 123 --unpause

# Pause in a specific project context
glab runner update 123 --pause -R owner/project

暂停时机:

  • 维护窗口(更新、重启)
  • 排查故障 Runner
  • 暂时减少 Runner 容量
  • 停用之前(先确认没有任务正在运行)

注意: 较早的文档/示例可能会提到 glab runner pause,但当前支持的命令形式为 glab runner update --pause / --unpause。

检查 Runner 处理的任务
# List recent jobs for runner 9
glab runner jobs 9

# Show only running jobs
glab runner jobs 9 --status running

# JSON output for automation
glab runner jobs 9 --output json

在暂停或删除 Runner 前,可用它检查 Runner 当前是否繁忙。

检查 Runner 管理器
# List managers attached to a runner
glab runner managers 9

# JSON output
glab runner managers 9 --output json

需要了解与 Runner 关联的 Runner 管理器进程/后端时,请使用此命令。

删除 Runner
# Delete with confirmation prompt
glab runner delete 123

# Delete without confirmation
glab runner delete 123 --force

# Delete in a specific project context
glab runner delete 123 --repo owner/project

⚠️ 删除操作不可撤销。 不确定时请先暂停。

决策树:暂停还是删除

Do you need the runner gone permanently?
├─ No → Pause it (recoverable)
└─ Yes → Is it actively running jobs?
          ├─ Yes → Check `glab runner jobs <id>`, then pause first and wait for jobs to finish
          └─ No → Delete with --force

Runner 状态参考

状态含义
online已连接并准备好接收任务
offline未连接(检查 Runner 进程)
paused已连接,但不接收新任务
stale最近 3 个月内未联系

故障排查

“runner: command not found”:

  • 需要使用当前版本的 glab。使用 glab version 检查。

实例级 Runner 出现“Permission denied”:

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

无法暂停或恢复 Runner:

  • 使用 glab runner list 确认 Runner ID。
  • 检查权限(项目角色必须至少为 Maintainer)。
  • 使用 glab runner update <id> --pause 或 --unpause。

暂停后 Runner 仍显示为“online”:

  • Runner 进程仍在主机上运行,只是不再接收新任务。
  • 这是预期行为。要完全停止 Runner,请通过 SSH 登录 Runner 主机并停止该进程。

无法删除 Runner:

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

将现有 Runner 分配给项目,使其能够接收任务:

# Assign a runner to the current project
glab runner assign <runner-id>

# Assign to a specific project
glab runner assign <runner-id> --repo owner/project

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

# Unassign from current project
glab runner unassign <runner-id>

# Unassign from a specific project
glab runner unassign <runner-id> --repo owner/project

注意: 分配/取消分配需要至少具备项目 Maintainer 角色。这与 glab runner delete 不同,后者会永久移除 Runner。

相关技能

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

命令参考

glab runner <command> [--flags]

Commands:
  assign    Assign a runner to a project
  delete    Delete a runner
  jobs      List jobs processed by a runner
  list      Get a list of runners available to the user
  managers  List runner managers
  unassign  Unassign a runner from a project
  update    Update runner settings, including pause/unpause

Flags (list):
  --instance     List all runners available to the user (instance scope)
  --output       Format output as: text, json
  --page         Page number
  --per-page     Number of items per page
  --repo         Select a repository
  -h, --help     Show help

评论

支持 Markdown