症状:不相关仓库也能把 macOS 工作流派到标准 Runner,或团队想按发布任务限制 Runner 使用范围。
最快解法:先按信任边界划分 Runner Group,再配置仓库访问和工作流路由;代表性流水线验收通过后,才考虑禁用标准托管 Runner 标签。需要网络配置时,不要把 Runner Group 当作网络隔离方案。
GitHub Actions macOS Runner Groups 配置,适合 GitHub 组织或企业管理员、CI 平台工程师,以及负责审查团队访问边界的技术和安全负责人。
如果你只想给单个仓库改 runs-on,而不需要组织级授权策略,这篇企业配置流程可能不是你当前要找的答案。
更新于 2026 年 11 月 4 日;功能范围与配置要点核实自 GitHub 官方 Changelog 和 Actions 文档。 GitHub 指出相关功能适用于 Team 与 Enterprise 计划;账户实际可见选项及界面以你当前设置和官方文档为准。(GitHub 官方公告)
上线前:确认 Runner 类型、计划和控制目标
先分清你管理的是 GitHub 托管 Runner,还是自托管 Runner。两者都可能使用 Runner Group,但操作路径与可用设置不能互相套用;本文讨论的是 GitHub 托管 macOS Runner。GitHub 于 2026 年 6 月 25 日公布 macOS Runner Group 的组级访问控制、并发管理和工作流路由能力,并注明当时适用于 Team 与 Enterprise 计划。(GitHub 官方公告)
先明确团队要解决的是哪一类问题:
- 谁能用:限制获准使用 Runner 的组织、仓库或工作流。
- 同时跑多少任务:按团队构建需求评估组级并发设置,不预设固定容量。
- Runner 如何访问网络:单独核实网络能力。Runner Group 管的是访问和路由,不等于网络隔离。
macOS Runner Group 能配置网络隔离吗?不能把组级权限当成网络隔离。GitHub 当前的公告说明 macOS Runner 不支持网络配置;如果你的构建必须访问私有网络或需要固定网络出口,应先逐项核实受支持的方案,而不是指望新建组就能满足。
划分信任边界:哪些工作流可以共用一个组
按仓库归属、任务职责和工作流信任程度设计组,而不要只按团队名称堆组。比如,普通构建与签名发布对凭据的使用方式不同;来自外部贡献者的工作流也不应未经审查就进入可处理发布凭据的执行路径。
| 任务场景 | 组与仓库策略的考虑 | 上线前要验证 |
|---|---|---|
| 受信任仓库的常规构建 | 只授权确实需要 macOS 构建的仓库 | 未授权仓库不能使用该组 |
| 发布或签名任务 | 与普通构建分开评估授权对象和工作流 | 目标工作流路由正确,凭据只在预期任务中可用 |
| 公共仓库或外部贡献工作流 | 单独审查访问策略,不默认与发布任务共用 | 未获准的任务被拒绝,失败时能辨认拒绝原因 |
建组前给每组记录用途、负责人、获准仓库及对应工作流。GitHub 文档说明,组织级组默认可能向组织内所有仓库开放访问,因此创建时要检查默认选项;企业级组还可能需要先在企业层级授权组织,再配置仓库访问。(Runner Group 访问控制文档)
配置阶段:创建组并收紧仓库授权
在组织设置中进入 Actions → Runner groups,创建用途明确的组,并按当前账户界面设置仓库访问策略。若你的组由企业层级管理,先确认该组允许哪些组织使用,再检查组织层级的仓库授权。界面细节和可选粒度以当前账户显示为准。
怎样限制 Runner Group 可用的仓库?把访问范围设为明确选择的仓库,而不是未经审查地沿用“所有仓库”。再用一个获准仓库和一个未获准仓库测试:前者能进入预期构建流程,后者不能通过这条组授权路径取得 Runner。
此外,检查 Runner 归属和默认组。GitHub 文档指出,新建 Runner 在没有另行指定时会进入默认组;因此只新增一个受限组,却不盘点既有 Runner 和原有工作流,可能留下仍可使用的旧路径。
路由阶段:让工作流明确请求目标组
在工作流文件的任务级 runs-on 中指定组名。以下 YAML 展示组路由的基本写法;实际组名必须与账户中配置的名称一致。需要进一步筛选时,可按 GitHub 当前语法组合组与标签,并核对该组所含 Runner 是否支持对应标签。(GitHub Actions 工作流语法文档)
jobs:
build:
runs-on:
group: macos-ci
steps:
- uses: actions/checkout@v6
- run: xcodebuild -version
组路由与 Runner 标签有什么区别?标签用于匹配 Runner 类型或特征;组名则将任务路由到获准使用的组。需要同时满足组与标签条件时,工作流可以组合二者,但标签不能替代仓库访问授权。语法和当前支持行为以 GitHub 的工作流语法文档为准。
先用低风险构建任务验证路由,再分别测试获准与未获准仓库。检查运行记录中的实际 Runner 和结果;如果任务意外排队、被拒绝或落到非预期资源,先回查组名、访问范围和 Runner 类型,不要把“工作流启动了”当作路由验收通过。
验收阶段:从小范围迁移到标准标签策略
GitHub 提供禁用标准托管 Runner 的组织设置;启用后,工作流需要通过 Runner Group 指定执行资源。因此这项变更应晚于迁移与验收,而不是用来替代配置过程。(禁用或限制 GitHub Actions 的组织设置文档)
禁用标准 GitHub-hosted runners 标签前要检查什么?先全组织盘点仍使用标准标签的仓库与任务,把它们迁移到已授权的组路由;再运行代表性构建,记录预期成功的任务、预期被拒绝的任务、失败回退方式和负责人。若仍有未迁移的工作流,就先不要禁用,避免任务突然无法匹配执行资源。
并发限制也要按实测需求调整:先观察团队的构建排队和运行模式,再决定是否需要更改组级设置。GitHub 的管理文档提供更大 Runner 的并发管理操作说明,但具体可用范围应以账户界面为准;不要把某个配置值当成适用于所有 macOS 组的容量承诺。(管理更大 Runner 文档)
决策条件:继续用托管 Runner,还是评估另一种 Mac 环境
- 若需求是按仓库授权、把任务路由到指定 macOS 组,且账户支持对应功能,则先配置组并完成验收,再评估是否禁用标准标签。
- 若要求 Runner 直接接入特定网络、固定网络出口或满足其他网络策略,则先核验 GitHub 当前支持范围;Runner Group 本身不能补上 macOS Runner 的网络配置能力。
- 若你还需要可长期控制的 macOS 执行环境,则把现有托管 Runner 与远程 Mac 方案分别评估;确认自身需求后再选择,不要把两者视为自动集成或等价的网络方案。
GitHub 托管 Runner 的优点是可通过 Actions 工作流直接路由,并由 GitHub 管理执行环境;限制则包括 macOS 网络配置边界、账户计划与设置范围的约束,以及标准标签迁移时可能影响旧任务。如果你需要独立的真实 Mac 主机来补充测试或运维环境,VPSMerge 提供通过 VNC、SSH 或网页控制台访问并拥有 root 权限的远程 Mac;这并不意味着它能直接加入 GitHub Runner Group,集成方式和网络要求需要你按工作负载另行验证。涉及数据处理时,可先阅读 VPSMerge 隐私说明;有特殊环境或交付要求,则通过 VPSMerge 联系页面核实。若你的任务长期稳定重载、必须使用特定物理接口,或要求未经验证的集成能力,租用方案未必合适;但对于临时测试、扩展 Mac 执行环境或尚不适合购置实机的团队,租赁可避免自购后仍需自行承担设备维护与闲置管理。
为团队自建 macOS Runner,开一台独享 M4
VPSMerge 提供独享物理 Apple Silicon M4 Mac mini,整机只供你的团队使用,减少与其他租户争抢资源。
租用构建节点