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 上」開篇的產品發布。