Mac mini 构建主机是可调度节点,不是宠物机——但若在未排空编排器的情况下直接重启,仍会让 Slack 一片红。本 2026 手册说明如何暂停新任务、安全结束在跑作业、把标签切到替换容量,并沟通时间线,让研发团队信任平台侧。文中含两张对照表、数值化排空阈值,以及九步有序清单,适用于 GitHub Actions 式自建机群,也可迁移到其他 macOS 队列系统。
若 Runner 尚未注册,请先阅读 Mac mini M4 自建 GitHub Actions。若维护紧随较大镜像晋升,请在 金丝雀与蓝绿切换 之后再排空,避免晋升中途下线主机。若窗口内等待飙升,请先用 队列深度与等待时间 SLO 解读指标,再归咎于「补丁慢」。若同一台独占机白天跑 CI、夜间还要跑自动化,排空前请对齐 CI 与 Agent 容量借调 中的标签与时间窗,避免维护窗口与借调窗重叠。
团队跳过正式排空时的典型故障
- 编译任务被强杀:在
xcodebuild过程中重启会浪费约 15~40 分钟墙钟时间,并在数周内损害开发者信任。 - 工作区锁遗留:粗暴终止会留下陈旧的
.lock文件或模拟器进程,导致后续十余个作业连续失败。 - 密钥轮换意外:维护常伴随钥匙串或 API 密钥更新;在跑作业可能仍持有旧凭据,直到正常退出。
交接策略矩阵
| 做法 | 额外容量需求 | 用户可见风险 |
|---|---|---|
| 标签排空 + 温热备用 | 1:1 替换池 | 备用机已预热则低 |
| 仅限时自然排空 | 无 | 中等——队列变长 |
| 硬停 / 直接重启 | 无 | 高——作业失败 |
继续等待与强制结束工作的分界
| 观测 | 阈值 | 动作 |
|---|---|---|
| 最老运行中作业时长 | < 50 分钟 | 等待——多半是正常的长时间测试 |
| 最老运行中作业时长 | > 95 分钟 | 通知负责人;考虑取消并在新主机重试 |
| 队列深度相对 SLO | p95 等待 +25% | 启用溢出标签或短期租用云端 Mac |
| 安全补丁严重度 | CVSS ≥ 9 | 经管理层批准的取消窗口 |
标签语义:排空指把主机从入站选择器中摘掉,而不是卸载 Runner 二进制。保留服务安装状态,维护拖期时可在数分钟内重新启用。
九步维护交接清单
- 开立变更单:列主机名、维护类型、预计时长与回滚负责人。
- 提前公告:工作日维护至少提前 24 小时发到研发频道;多区域排空提前 72 小时。
- 核实备用容量:确认替换 Runner 在编排界面显示为
Idle。 - 从默认标签移除目标:停止调度新作业;允许在跑作业完成。
- 观察运行数量:每 5 分钟刷新;记录异常。
- 计数归零后:优雅停止 Runner 服务并抓取末尾日志。
- 执行维护:系统补丁、磁盘清理、Xcode 安装——为 CMDB 记笔记。
- 重新启用前冒烟:跑一条覆盖编译、签名与上传的标准流水线。
- 低峰期挂回标签:持续观察 p95 等待 60 分钟后再关单。
用自动化约束人为失误
纯人工清单在值班同学生疏或疲惫时容易失效。把主路径写进自动化:通过 API 切换编排标签、自动开变更单并发送预制 Slack 通知,可显著降低方差。在走向 kill -9 或强制重启前保留人工门禁——除非附带应急事件编号,否则自动化不应在 running_jobs > 0 时重启主机。正确接线后,团队的中位维护时长常下降 18~30%,因为不必每次凭记忆重敲「Mac 版 kubectl」步骤。
- 排空开始 Webhook:向指标栈上报主机名与预计结束时间戳。
- 运行作业数量 20 分钟不变则告警:更像卡死执行器而非长编译。
- 维护模式自动过期:若标签脱离超过 4 小时仍未结案则呼叫——有人忘了最后一步切回。
把自动化当作可执行的文档:每个分支应输出结构化 JSON,便于复盘时间线而无需翻 SSH 历史。临时租用溢出 Mac 时,在 CMDB 用与自动化一致的前缀打标签——随意主机名容易导致重复注册、抢走一半队列容量。
区域备用与突发租用
若 Mac 池只在一个城市,排空几乎必然变成队列事件。在香港、日本、韩国、新加坡或美国放置备用 Mac mini M4,可在不打飞的送笔记本的情况下吸收维护窗口。NodeMac 的 区域定价 支持短期租用,正适合这类重叠期。补丁后若需交互确认,可配合 SSH/VNC 帮助文档 接入控制台。
减少工单的沟通模板要点
复制粘贴也要讲纪律。每次至少写清四件事:受影响的标签、UTC 与本地时间的起止窗口、实时队列深度查看位置、以及作业超过公告窗口时工程师该怎么做。省略「卡住怎么办」说明的团队,首小时内重复 IT 工单量往往上升约 3 倍——量一次你就再也不会漏这一行。
大型排空后花 15 分钟 做简短复盘:实际停机是否超估、是否有人绕过标签硬编码 Runner 名、溢出容量是否真的吃到流量?把结论写进下一次维护 RFC,流程才会复利而不是每季度归零。变更单里附一张编排器「运行中作业」曲线截图,方便后人看客观证据而非口述记忆。
常见问题
发布冻结周还要排空吗?
外观类补丁可尽量推迟;若安全强制要求,提前加机并缩短排空窗口,而不是整个跳过流程。
维护超出变更窗口怎么办?
先延长备用标签路由,再发明确的「尚未恢复」更新附新 ETA。在管理层以为 CI 健康时默默饿死队列,比回滚旧镜像昂贵得多。
Mac mini M4 硬件让排空测算更稳定:Apple Silicon 在混合编译与模拟器负载下功耗曲线平稳,统一内存减少长排空中的交换卡顿,物理隔离意味着备用机表现像生产环境——不会像笔记本热节流那样中途掉速。NodeMac 在香港、日本、韩国、新加坡与美国提供带 SSH 与 VNC 的专用 Mac mini,让备用池是真实机柜节点而非共享虚拟机。按量租用突发容量,可把「维护季」从资本项目变成可与切换、审计并排安排的运营科目。