在 Kubernetes 上部署并自动伸缩 GitHub Actions 自托管 Runner 的控制器。
kunchenguid/runner-up
在你自己的 Linux、Mac 和 Windows 机器上自托管 GitHub Actions runner,每个任务使用全新的容器、虚拟机或账户。
- Star
- 284
- Fork
- 21
- 未关闭 Issue
- 2
- 最近提交
- 前天
这是什么?
runner-up 把 GitHub Actions 任务放到你自己已有的机器上运行,替代 GitHub 托管的 runner。一个协调器通过 runner scale set 与 GitHub 通信,监听排队中的任务,并把每个任务分配给某台机器上的空闲位置。Linux 上每个任务使用全新的 Docker 容器或 KVM 虚拟机,Mac 上使用全新的 tart 克隆或 Apple container 客户机,Windows 上使用全新的系统账户或 Hyper-V 虚拟机,任务结束后即被移除。也可以选择直接在宿主机上运行任务。
协调器仅通过 SSH 连接各台机器,无需部署 Kubernetes 集群。它会记录每台机器的 CPU 核心数和内存,为机器所有者保留资源,并可按可配置的规则在多个仓库之间排序任务。默认拒绝来自 fork 仓库的 Pull Request。协调器重启时正在运行的任务不会中断;某台机器的代理无法访问时会暂停分配任务,直到它恢复响应。
项目尚处早期,并分别标明各类提供方的状态:Linux 上的 Docker 和 KVM、Mac 上的 tart 与宿主机位置已运行过真实任务;Hyper-V、Apple container 和 Windows 账户位置仍为实验性功能。项目依赖 GitHub 的 runner scale set 接口,GitHub 目前仍将其标记为预览版。
核心功能
- 01每个任务在全新的 Docker 容器、KVM 虚拟机、tart 克隆或 Windows 账户中运行,结束后即被删除。
- 02通过 SSH 连接机器,无需部署 Kubernetes 集群。
- 03将每台机器的 CPU 核心和内存划分为多个运行位置,并为机器所有者保留资源。
- 04可按可配置规则在多个仓库之间对排队任务排序。
- 05默认拒绝来自 fork 仓库 Pull Request 的任务。
- 06协调器重启时保持正在运行的任务继续执行。
适用场景
- 用自有闲置的 Linux 或 Mac 机器替代付费的 GitHub 托管 runner 分钟数。
- 在已有的 Mac 上运行 macOS 构建和签名任务。
- 在闲置的办公室或家用 PC 上运行 CI 任务,无需管理 Kubernetes 集群。
- 在自有硬件上为每个 CI 任务提供隔离的运行环境。
快速上手
- 1
使用 Go 安装 runner-up
go install github.com/kunchenguid/runner-up@latest - 2
选择要服务的仓库和 Linux 任务标签
runner-up init --repo you/app --pool my-linux - 3
添加一台可通过 SSH 访问的机器
runner-up machine add box --ssh ci@box - 4
检查配置并启动协调器
runner-up check-config && runner-up serve
使用前须知
- 协调器只能运行在 Linux 和 macOS 上,不支持 Windows。
- GitHub 的运行器规模集仍处于预览阶段,其变化可能导致 runner-up 无法工作。
- Hyper-V、Apple container、Windows 账户、借用和排空功能仍处于实验阶段,可能在版本间变化。
- 该项目尚处早期,部分提供方尚未运行过真实任务。
收录于专题
标签
常见问题
- runner-up 是什么?
- 在你自己的 Linux、Mac 和 Windows 机器上自托管 GitHub Actions runner,每个任务使用全新的容器、虚拟机或账户。 runner-up 把 GitHub Actions 任务放到你自己已有的机器上运行,替代 GitHub 托管的 runner。一个协调器通过 runner scale set 与 GitHub 通信,监听排队中的任务,并把每个任务分配给某台机器上的空闲位置。Linux 上每个任务使用全新的 Docker 容器或 KVM 虚拟机,Mac 上使用全新的 tart 克隆或 Apple container 客户机,Windows 上使用全新的系统账户或 Hyper-V 虚拟机,任务结束后即被移除。也可以选择直接在宿主机上运行任务。
- runner-up 可以免费使用吗?用的什么许可证?
- runner-up 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- runner-up 还在维护吗?
- 活跃维护中。runner-up 最近一次提交是在 2026年11月6日。
- runner-up 适合用来做什么?
- 用自有闲置的 Linux 或 Mac 机器替代付费的 GitHub 托管 runner 分钟数。 在已有的 Mac 上运行 macOS 构建和签名任务。 在闲置的办公室或家用 PC 上运行 CI 任务,无需管理 Kubernetes 集群。 在自有硬件上为每个 CI 任务提供隔离的运行环境。
- runner-up 怎么安装和运行?
- 使用 Go 安装 runner-up: go install github.com/kunchenguid/runner-up@latest 选择要服务的仓库和 Linux 任务标签: runner-up init --repo you/app --pool my-linux 添加一台可通过 SSH 访问的机器: runner-up machine add box --ssh ci@box 检查配置并启动协调器: runner-up check-config && runner-up serve
- 在哪里获取 runner-up?
- 源代码和安装说明在 GitHub 上:https://github.com/kunchenguid/runner-up
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
在 Docker 容器中运行 Windows,支持自动下载并无人值守安装,可通过浏览器或 RDP 访问。
基于 QEMU 的封装工具,自动下载系统镜像并启动优化配置的 Windows、macOS 和 Linux 虚拟机。
面向 Apple Silicon 的自托管 macOS CI 工具,用临时虚拟机运行 GitHub Actions、Buildkite 等构建任务。
基于 Electron 的应用,在 Linux 上通过 Docker 或 Podman 容器运行 Windows 应用,并以原生窗口形式呈现。
基于 KVM 的极简虚拟机监控器,用于运行轻量级 microVM,支持安全的多租户 serverless 与容器工作负载。