mcpField
G
github-runner

github-runner

github.com/magnus919云与 DevOps15359 次安装今天更新
代码仓库

关于 github-runner

面向自托管 GitHub Actions Runner 部署与运维的参考技能,帮助团队选择部署方式并处理注册、作业路由、安全、扩展和故障排查。

主要功能

  1. 01systemd、Docker、ARC 部署选项
  2. 02Runner 注册与令牌说明
  3. 03使用标签和组路由作业
  4. 04安全与自动扩展参考
  5. 05监控和故障排查指南
  6. 06Docker Compose 与 Runner 镜像模板

适用场景

  1. 01为 CI Runner 选择部署方式
  2. 02排查 Runner 注册和令牌错误
  3. 03将作业路由到指定 Runner
  4. 04规划 Runner 安全或自动扩展

安装

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

$npx skills add https://github.com/magnus919/agent-skills --skill github-runner

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
evals/
evals.json
references/
architecture.md
custom-images.md
deployment.md
management.md
network.md
scaling.md
security.md
templates/
custom-runner.Dockerfile
docker-compose.yml

详细介绍

自托管 GitHub Actions 运行器

部署和管理自托管 GitHub Actions 运行器——执行 CI/CD 工作流任务的机器。自托管运行器让你可以控制硬件、操作系统和工具链,但你需要自行维护环境。

适用场景

触发语句操作
“为我的项目设置 CI”,“为 [仓库/组织] 部署自托管运行器”阅读部署——选择 systemd、Docker 或 ARC
“运行器无法注册/持续失败”,“运行器返回 404”,“注册令牌已过期”阅读管理——ACCESS_TOKEN 与 RUNNER_TOKEN、组
“如何自动扩缩运行器”,“自动扩缩运行器”,“排队任务太多”阅读扩缩——ARC、Scale Set Client、临时运行器
“保护我的自托管运行器”,“加固运行器”,“运行器安全”,“公共仓库风险”阅读安全——公共仓库风险、临时运行器、JIT、组
“创建自定义运行器镜像”,“构建运行器 Dockerfile”,“带 Python 的自定义运行器”阅读自定义镜像——Dockerfile、ARC 容器模式
“运行器需要访问哪些域名?”,“运行器防火墙规则”,“运行器网络设置”阅读网络——防火墙规则、TLS、代理
“路由时用标签、组,还是两者都用?”,“如何指定特定运行器”阅读管理——标签和组章节
“监控/排查运行器问题”,“运行器离线”,“运行器未接收任务”阅读管理——监控和故障排查章节

快速参考

部署方案
方式复杂度自动扩缩适用场景
systemd 服务低手动单台机器、简单 CI
Docker 容器中手动副本家庭实验室、小型团队
ARC(Kubernetes)高内置具备 K8s 专业知识的团队
Scale Set Client高自定义非 K8s 平台团队
关键事项:ACCESS_TOKEN 与 RUNNER_TOKEN

这是最常见的配置失败原因。myoung34/github-runner Docker 入口点在启动时取消导出 RUNNER_TOKEN——它仅用于注销。注册需要 ACCESS_TOKEN(GitHub PAT)。

令牌用途有效期
ACCESS_TOKEN注册——通过 GitHub API 生成新令牌长期有效(PAT)
RUNNER_TOKEN仅用于注销——不用于初始注册60 分钟

PAT 权限范围:

  • 仓库级:repo
  • 组织级:admin:org
  • 企业级:manage_runners:enterprise
标签策略

默认标签:self-hosted + 操作系统(linux/windows/macOS)+ 架构(x64/ARM/ARM32/ARM64)

常见约定:self-hosted,<hostname>,<os>,<arch>,<project>。在工作流中:

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

所有标签都必须匹配(AND 逻辑)。使用 --no-default-labels 移除自动添加的操作系统/架构标签。

常见问题
问题原因解决方法
POST 请求 runner-registration 时返回 404使用了 RUNNER_TOKEN 而非 ACCESS_TOKEN改用带 PAT 的 ACCESS_TOKEN
“Could not find any self-hosted runner group named 'Default'”组织使用了其他组名通过 gh api 检查组,并设置 RUNNER_GROUP
未预期出现 “Ephemeral option is enabled”EPHEMERAL=0 在 bash 中为真值使用 EPHEMERAL=false(字符串)
docker compose down -v 清除了凭据命名卷已删除使用 ACCESS_TOKEN 后可自动恢复
运行器无法访问主机文件系统路径运行器在 Docker 容器内运行在工作流中内联编写部署配置
Hugo 构建提示 “Go not found”Ubuntu 20.04 运行器上没有 Go执行 hugo mod vendor 并提交 _vendor/
拉取 GHCR 镜像提示 “unauthorized”部署任务中未进行 Docker 注册表身份验证添加 docker/login-action@v4
运行器离线超过 14 天被 GitHub 自动移除注册新的运行器

顺序工作流

1. 选择部署方式

阅读 deployment,选择 systemd、Docker、ARC 或 Scale Set Client。

2. 确定所需的 Runner 范围
  • 仓库级:Runner 的范围为单个仓库 — 你需要管理员访问权限
  • 组织级:Runner 在组织内的多个仓库间共享 — 你需要组织所有者访问权限
  • 企业级:Runner 在企业内的多个组织间共享 — 你需要企业访问权限
3. 注册 Runner

阅读 architecture 参考文档,了解注册流程。

4. 将作业路由到 Runner

使用 runs-on 搭配标签,并可选择使用组。阅读 management 中有关标签的部分。

5. 监控和排查问题

出现问题时,阅读 management 中的故障排除部分。

6. 规划安全和扩展

对于生产部署,请阅读 security 和 scaling。

模板

参考文件

文件在以下情况下加载
references/architecture.md你需要了解注册流程、作业生命周期或 Runner 通信
references/deployment.md你需要部署 Runner — systemd、Docker、ARC 或 Scale Set Client
references/security.md你需要强化 Runner 安全性、设置临时/JIT 模式或配置组
references/scaling.md你需要自动扩缩 — ARC、Scale Set Client 或由 webhook 驱动的扩缩
references/management.md你需要了解组、标签、监控、故障排除或清理
references/custom-images.md你需要自定义 Runner Dockerfile 或 ARC Kubernetes 模式
references/network.md你需要配置防火墙规则、代理,或正在排查连接问题

评论

支持 Markdown