GitHub 在 4 月 28-29 日经历了横跨多个服务的降级,导致 GitHub Issues 离线 20 小时 24 分钟、GitHub Pages 离线 20 小时 24 分钟、GitHub Actions 离线 14 小时 6 分钟,数据来自 GitHub 自家状态页(由 StatusGator 追踪)。DownDetector 上的报告于 4 月 28 日 9:05 CET 左右激增。事故公布的标题为 "Incomplete pull request results in repositories." 该次宕机发生于 GitHub 宣布将 Copilot 改为按用量计费的 AI Credits 的同一周 —— 二者叠加,使「不要依赖单一 git 主机」这套论点比多年来都更好讲。
持续时间比触发原因更要紧。Issues 与 Pages 各 20 小时、Actions 14 小时的停摆,把开发者工作流的大块切片打离线了。Issues 是大多数开源项目做缺陷追踪与项目管理的地方;Pages 是许多小型项目托管文档与 demo 的地方;Actions 则是世界事实上的包分发图谱之下的 CI/CD 基底 —— 一旦 Actions 挂掉,包就无法从规范化流水线发布、对 GitHub Container Registry 的 push 失败,任何把 release 流程绑在 Actions runner 上的项目都停止发布。事故那条标题 —— "Incomplete pull request results in repositories" —— 掩盖了背后的级联:与 PR 相关的元数据驱动 Actions 触发,Actions 驱动 Pages 部署,Pages 再驱动 Issues 工单流。当 PR 数据层一抖,上面整张图都跟着抖。
GitHub 已经是开发者生态中最接近「单点故障」的存在。GitHub 上约有 2 亿开发者,而世界开源 CI 的不可忽略一部分跑在 GitHub Actions 上。这一周的可靠性叙事并不让人舒服:Issues 停摆 20 小时不是 20 分钟级别的小磕绊,而事故根因落在 PR 数据层,说明这次失败比基础设施抖动更深。叠加 4 月 28 日宣布的 Copilot 改为 AI Credits 计费,这一周的故事可读为:「核心系统脆弱的中心化平台,接下来还要为 AI 功能多收费。」预计未来几周对 GitLab、Codeberg、Forgejo 与自托管 Gitea 的兴趣会有可量化的抬升。它不会是大规模出走 —— 切换成本巨大 —— 但高流量开源项目的维护者会更认真地考虑 mirror 与 fallback。
对 builders 而言,三件可以真的去做的事。第一,具体审视你对 GitHub Actions 的发布流程依赖:如果你的包发布、容器构建或文档部署流水线只在 Actions runner 健康时才能触发,你就有一个隐藏的单点故障。把关键作业镜像到第二家 CI(CircleCI、Buildkite、GitLab CI、自托管 runner),即使日常仍跑在 Actions。第二,把仓库 push-mirror 到第二个主机。在 GitLab 或 Codeberg 上配置 remote,大约 90 秒,在 GitHub Issues 第一次停止接受写入时就回本了。第三,Copilot 计费重置叠加这次宕机,会让「能离线运行,或运行在替代基础设施上」的 AI 开发工具,成为一个更有说服力的卖点 —— 留意未来一个月内,以「你的 AI 编码助手跑在你自己的基础设施上,而不是 GitHub 上」开篇的产品发布。
