@no_stp_on_snek: 各位请看:将空闲的 Mac 变为额外的 GitHub Actions 容量。macOS CI Burst Runner 是一个可选的菜单栏控制程序……
摘要
macOS CI Burst Runner 是一个可选的菜单栏控制器,可以将空闲的 Mac 转变为额外的 GitHub Actions 容量,并具有任务管理和磁盘保护的安全功能。
查看缓存全文
缓存时间: 2026/08/29 17:57
闲置 Mac 变身额外 GitHub Actions 算力
macOS CI 突发运行器是一个可选的菜单栏控制器,支持完成当前任务后暂停,并带有磁盘安全防护,让您离开时也能将 Mac 临时用于 CI 任务。
仓库内提供 AI 配置提示说明。
Apache-2.0 开源协议:
https://github.com/TheTom/macos-ci-burst-runner…
TheTom/macos-ci-burst-runner
来源:https://github.com/TheTom/macos-ci-burst-runner
Mac CI 突发运行器
一款可选的菜单栏控制器,仅在您需要时将 Mac 用作 GitHub Actions 自托管运行器。同时兼容 Apple Silicon 和 Intel 芯片 Mac,支持组织级或仓库级运行器配置。
控制器具有四种运行状态:
- 关闭: 运行器服务已停止,调度标签已移除
- 可用: 调度标签已添加,服务在线,连接电源时 Mac 保持唤醒
- 忙碌: GitHub 显示有活跃任务,此时禁止关闭
- 排空: 立即移除调度资格,当前任务可完成,随后停止服务并解除唤醒锁
同时支持配置磁盘剩余空间阈值,在启动前和 GitHub Actions 任务启动钩子中双重验证。
安全第一
自托管运行器在您的 Mac 上执行仓库控制的代码。建议尽可能使用专用 macOS 账户或独立设备。请勿将个人工作站暴露给不受信任的仓库、公开分支的拉取请求或可能被不受信任贡献者修改的工作流。
对于组织运行器,建议创建受限运行器组,仅允许选定的私有仓库访问,并在可用情况下限定受信任的工作流。所有符合条件的工作流必须配置 BURST_LABEL 标签;否则无法通过移除标签安全地停止机器。
本项目不存储任何 GitHub 凭据,而是使用基于 macOS 钥匙串的现有 gh 登录凭证。请勿在 config.env 中存放令牌。
环境要求
- macOS 13 或更高版本
- 支持 Swift 6 的 Xcode 命令行工具
- GitHub CLI(https://cli.github.com/)与
jq工具 - 需要拥有者/管理员权限以注册和标记所选运行器范围
组织标签管理需要认证身份对自托管运行器具有写入权限。GitHub 在自托管运行器 REST API 文档中详细说明了经典令牌 admin:org 权限要求及细粒度替代方案(https://docs.github.com/en/rest/actions/self-hosted-runners)。
安装配置
-
无需将令牌复制到本仓库,直接完成认证:
gh auth login gh auth status -
构建并安装菜单控制器:
./Scripts/install-controller.sh此脚本会将本地文件安装到
~/Library/Application Support/MacCIBurst,为菜单应用创建登录启动代理,并创建(但不立即加载)在可用状态下使用的caffeinate启动代理。 -
编辑生成的私有配置文件:
open -e "$HOME/Library/Application Support/MacCIBurst/config.env"需设置运行器范围、所有者、名称、唯一突发标签、目录路径、磁盘阈值及可选运行器组。组织级运行器无需配置仓库名称,除非需要在菜单中显示当前任务链接。
-
在 GitHub 中将组织运行器组限制为选定的受信任私有仓库。GitHub 建议为自托管运行器使用私有仓库,避免公开分支提交危险工作流代码。详见《使用运行器组管理访问权限》(https://docs.github.com/en/actions/how-tos/manage-runners/self-hosted-runners/manage-access)。
-
审核所有目标工作流,必须精确匹配突发标签:
jobs: test-on-mac: runs-on: [self-hosted, macOS, burst] steps: - uses: actions/checkout@v4 - run: ./your-safe-test-command组织运行器还支持组与标签组合路由:
runs-on: group: your-restricted-runner-group labels: burst -
注册运行器:
"$HOME/Library/Application Support/MacCIBurst/bin/setup-runner.sh"脚本会自动选择当前 Mac 架构的官方运行器包,经过 SHA-256 校验后安装。注册完成后保持关闭状态,调度标签已移除。
-
验证初始安全状态:
"$HOME/Library/Application Support/MacCIBurst/bin/mac-ci-burst" status | jq -
建议在正式使用前,使用无害工作流测试完整流程:可用 → 忙碌 → 完成后暂停 → 关闭。
合上 MacBook 盖子通常会触发休眠,即使在 caffeinate 激活状态下。请保持盖子开启,或使用支持的电源闭合模式配置。
命令行控制
mac-ci-burst status # 输出 JSON 状态(适用于脚本/诊断)
mac-ci-burst available # 通过磁盘检测,添加调度资格,启动运行器
mac-ci-burst drain # 移除资格,完成当前任务,停止服务
mac-ci-burst off # 立即停止(GitHub 显示忙碌时拒绝操作)
mac-ci-burst reconcile # 强制执行目标状态与磁盘阈值检查
安装的命令位于:
~/Library/Application Support/MacCIBurst/bin/mac-ci-burst(除非覆盖 MAC_CI_BURST_HOME 环境变量)
安全模型
唯一突发标签是调度开关。可用状态先添加标签(此时运行器离线),再启动服务;排空操作首先移除标签,确保现有任务完成前不会分配新任务。
这是纵深防御机制,非沙箱隔离。已分配给运行器的工作流将以 macOS 运行器账户权限执行。磁盘检查不能保护凭据、源文件或无关进程。
测试方法
swift build -c release
./Tests/test-controller.sh
控制器测试使用模拟的 GitHub、服务、休眠和磁盘命令,从不注册真实运行器或修改 GitHub 状态。
AI 辅助配置
AI_AGENT_SETUP_PROMPT.md 提供了可直接使用的安全提示模板,适用于 AI 编程助手。文档明确了可检查/安装的内容、需要人工决策的事项,以及如何验证运行器处于关闭状态后再完成配置。
许可证
Apache License 2.0,详见 LICENSE 文件。
相似文章
@GitHub_Daily: Birth,一个开源的 macOS 启动项管理器,把用户级、全局级、系统守护进程、登录项四层全拉到一个界面里。 每个启动项都能看到开发者签名身份,冒充系统签名的会直接标红提示,一键禁用或移除。 GitHub:http://github.c…
Birth 是一个开源的 macOS 启动项管理器,集中管理用户级、全局级、系统守护进程和登录项,并显示代码签名身份、标记伪装的系统签名,支持一键禁用/移除和搜索定位。
@charliermarsh: 没有Zizmor,这就是你用GitHub Actions时的大脑
查理·马什发推文强调Zizmor是改进GitHub Actions工作流的工具,但未提供具体细节。
@sitinme: 有一个挺有意思的开源项目,叫 Cider,专门给 Apple Silicon 芯片的 Mac 做本地 AI 推理加速。 很多人买了 Mac mini、MacBook Pro ,想在本地跑模型,但总会出现速度不够快、内存吃得猛的情况 其实 …
Cider 是一个开源项目,专为 Apple Silicon Mac 设计,通过充分利用 M 系列芯片的算力来加速本地 AI 推理,适配 MLX 生态,支持 Qwen、Llama 等模型,安装简单。
@dabit3: 新视频:如何在大约60秒内为云代理提供一台带有Xcode和iOS模拟器的真实Mac 此设置使每个云代理会话…
新的视频教程演示了如何在约60秒内为云代理提供带有Xcode和iOS模拟器的真实Mac环境,使用DevinAI和NamespaceLabs。
@Chris_Wozniczek: 一个提示。这可以通过手机、Linux、Windows 或任何有浏览器的设备完成。设置只需点击五次。文章详细介绍……
本文展示了一种方法,使用Devin AI代理和Namespace的云Devboxes,在没有MacBook的情况下构建SwiftUI iOS应用,从而能够从任何基于浏览器的设备进行开发。