← 返回技術部落格

WWDC 2026
為什麼讓 iOS CI 建置速度問題更嚴重了?

MacBook 程式編輯器與多螢幕開發者工位,象徵 WWDC 後 iOS CI 建置與工具鏈升級
WWDC 26 推送 Xcode 26 beta 後,工位上每一次全量編譯都在提醒:CI 慢在執行模型,不在鍵盤前面。

結論:WWDC 26(6 月 8 日)帶來了 Xcode 26 / iOS 27 SDK,卻沒有任何新款 Mac。對 iOS 團隊而言,這是標準的「軟體先行、硬體缺席」局面——CI 必須先撐過一輪快取清零 + 全量重新建置 + 託管 Runner 壅塞,建置速度不是慢 10%,而是結構性惡化

四個疊加因素:① 升級 beta 必清 DerivedData;② iOS 27 SDK 模組更重、Swift 編譯負擔更大;③ 沒有 M5 Mac mini,算力升級路徑受阻;④ 六月全行業同時跑 CI,macos-latest 排隊時間暴增。

應避免的陷阱:把變慢歸因於「M4 不夠快」然後被動等待秋季 M5——換晶片救不了 ephemeral Runner 模型

當下可行的解法:self-hosted Mac mini 搭配持久磁碟,把 beta 驗證與正式 release 拆成獨立 Runner 標籤;詳見 self-hosted 加速指南

6 月 9 日(週一)早上,許多 iOS 負責人的 Slack 幾乎同時出現三則訊息:「main 昨晚 Archive 從 11 分鐘暴增到 34 分鐘」「macos-latest 排隊 18 分鐘還沒動」「裝完 Xcode 26 beta,DerivedData 消失了」。這不是個別倉庫設定出問題——WWDC 季每年都是一場 CI 地震,只是 2026 年疊加了記憶體供應吃緊、沒有新桌面 Mac,以及 Apple Intelligence 帶來的 SDK 膨脹,震感更強。硬體缺席的背景可見 M5 Mac mini 為何未現身 WWDC 26;本文只回答:為何你的流水線突然更慢,以及現在該怎麼改。

1)WWDC 後 CI 變慢的三個「標準症狀」

打開 Actions 日誌,若同時命中以下兩條或以上,基本可判定是WWDC 衝擊波,而非業務代碼突然變複雜:

  • bootstrap 階段暴增:pod install、SPM resolve、下載 iOS 27 Simulator runtime 各佔數分鐘——託管 Runner 每次 job 從零開始,這段最受衝擊。
  • 建置退回「全量編譯」:升 Xcode 主版本後,ModuleCache 與 DerivedData 格式與舊版不相容,增量編譯失效,xcodebuild 時間接近冷啟動。
  • 排隊時間拉長:WWDC 後 72 小時內,大量團隊同時更新 workflow 測試 beta,託管 macOS 分鐘共用池壅塞,排隊比建置本身還久。
10 秒自我診斷:比較 WWDC 前最後一次綠燈建置與現在的 Setup XcodeRun script 耗時。若 Setup 從 1 分鐘變成 8 分鐘、編譯從增量變成全量——問題在工具鏈切換,不在 Swift 業務邏輯。

2)Xcode 26 beta:強制「快取清零季」

Apple 在 WWDC 當天推送 Xcode 26 beta 與 iOS 27 SDK。對本機開發者,升級只是重新索引、稍等片刻;對 CI 基礎架構,這意味著整份磁碟狀態作廢

  • DerivedData 路徑與索引格式變更——舊快取無法重用,升級後第一次 Archive 必然全量建置。
  • Swift 編譯器版本切換——.swiftmodule 不相容,所有 target 重新編譯。
  • CocoaPods / SPM 鎖定檔案震盪——部分 Pod 尚未支援 iOS 27,pod install 反覆 resolve 或觸發完整 repo-update。
  • 新 Simulator runtime——每個 runtime 數 GB,託管 Runner 每次 job 重新下載,bootstrap 直接 +5–15 分鐘。

更麻煩的組織風險是壓力驅動的 beta 採用:keynote 隔天每家公司都有人問「我們支援 Siri AI 了嗎?」——團隊在還沒準備好前就將 Xcode 26 推上 main。一條 workflow 改動,讓全公司 CI 集體進入冷啟動模式。正確做法是拆分流水線:正式 release 繼續釘在穩定版 Xcode 16;僅開 ios-27-beta 分支或專用 beta Runner 做適配工作。請參閱 Xcode 支援矩陣

3)SDK 變胖:編譯量上升,算力沒有跟上

WWDC 26 的軟體主軸是 Siri AIApple Intelligence 擴充MacRumors WWDC 26 摘要)。對 App 工程師而言,這通常轉化成實際的建置成本:

  • 新 Framework 依賴(App Intents、視覺/語音管線封裝)——連結器圖中多了更多模組。
  • Swift 6 並發檢查更嚴格——同樣的源碼,編譯器工作量增加。
  • Asset Catalog 與本地化資源膨脹——Copy Bundle Resources 階段明顯變長。

在有熱快取的本機 M4 MacBook 上,這些增量可能只是「多等兩分鐘」;在沒有持久快取的託管 Runner 上,與冷啟動代價疊加,「慢」就會變成「無法接受」。諷刺的是:Apple 推的是 AI 能力,買單的卻是CI 排隊等候的開發者

4)沒有新 Mac:算力升級路徑受阻

過往的 WWDC 週期,桌面團隊至少還能安慰自己「展後買台新 Mac mini 給 CI」。2026 年硬體零發布,M5 Mac mini 預計要等到秋季窗口,加上全球記憶體供應短缺,即便上市後 24 GB / 32 GB SKU 也可能難以取得。實際影響:

  • 期望靠「買新機」解決慢建置的團隊——採購決策凍結 3–4 個月
  • 已有 M2/M3 16GB Runner 的團隊——升 SDK 後記憶體更緊,swift-frontend 與 Simulator 並行時觸發 swap,建置時間非線性惡化。
  • 打算增設第二台 Runner 以提升並發——硬體交付週期趕不上 beta 適配的截止日。

這並非說 M4 不夠用——對絕大多數 iOS CI,M4 16GB 仍足夠。重點在於:WWDC 後變慢的主因根本不是晶片算力,而是執行模型(ephemeral vs. 持久磁碟)。空等 M5 是以硬體敘事掩蓋工程問題。

5)託管 Runner 的「WWDC 踩踏」

每年 6 月,GitHub 託管 macOS 池都會經歷一波需求尖峰。2026 年的特殊之處在於:AI 敘事吸引更多非 iOS 原生團隊也湧向 macOS job(跑 Core ML 轉換、測試 Apple Intelligence 範例專案),與正牌 App 上架搶同一池子。

託管 Runner 的三個結構性缺陷在 WWDC 季被放大:

缺陷平時WWDC 後
Ephemeral 磁碟冷啟動尚可忍受每次 beta job 全量下載 SDK 元件
共用排隊離峰時段較好工作日白天 queued >10 分鐘是常態
快取 action 失效DerivedData 可部分命中Xcode 主版本切換,cache key 全廢

macos-15macos-latest 標籤救不了——標籤換的是 OS 映像,不是「你的 DerivedData 明天還在」。在 GitHub Actions iOS CI 加速分析中,中型 Swift 專案託管 P50 約 28 分鐘,其中排隊 + bootstrap 通常佔一半以上;WWDC 後 bootstrap 單獨 +40% 並不罕見。

6)WWDC 前後:同一倉庫的典型耗時變化(樣本)

以下為 Nuvcloud 客戶中未改 Runner 模型、僅在 main 上升 Xcode 26 beta 的 Swift/UIKit 專案(CocoaPods、單一 scheme)P50 對比,非 SLA,請以自家倉庫驗證:

表:託管 macOS Runner · WWDC 前(Xcode 16)vs WWDC 後首週(Xcode 26 beta)
階段WWDC 前 P50WWDC 後首週 P50
queued5 min12 min
bootstrap7 min14 min
build / archive9 min16 min
sign + upload4 min5 min
合計~25 min~47 min

同一倉庫在self-hosted Mac mini M4、正式 job 釘 Xcode 16、僅 beta Runner 升 Xcode 26 的設定下,正式線 P50 可維持在 WWDC 前水準;beta 線首週全量建置 20+ 分鐘屬預期,但不污染 main。這就是「拆 Runner」的價值。

7)現在該做什麼:改執行模型,別等 M5

WWDC 後 48 小時內,建議依優先順序執行:

  1. 正式 release 釘死 Xcode 版本——在 workflow 中寫死 xcode-selectDEVELOPER_DIR,禁止 main 自動跟隨 beta。
  2. beta 適配走獨立分支 + 獨立 Runner 標籤——例如 runs-on: [self-hosted, macos, xcode26-beta],與正式 ios-ci 隔離。
  3. 上 self-hosted 持久磁碟——DerivedData、Pods、SPM 跨 job 保留;第二次 beta 建置才會回落到增量時間。設定方式見 GitHub self-hosted runner 文件
  4. Simulator runtime 只裝一次——在 Runner 映像中預裝 iOS 27 runtime,workflow 中不再執行 xcodebuild -downloadPlatform
  5. 用 48 小時日租驗證——月租前先用 雲端 Mac mini 跑通再上生產;節點選型見 六地 Runner TCO
範圍說明:本文不重複 Fastlane 簽署細節——請見 self-hosted 加速指南 中的 TestFlight / 簽署段落,也不展開 Flutter 三快取——見 Flutter iOS CI 指南。核心就一句:WWDC 讓 SDK 變了,你要讓 Runner 磁碟留下來。

8)常見疑問

WWDC 後一定要立刻升 Xcode 26 嗎? 不必。送審 App Store 仍以穩定版 Xcode 為準;beta 僅用於提前適配 iOS 27 API,且應隔離在專用流水線。

等秋季 M5 Mac mini 能一勞永逸嗎? 不能。新晶片對單次全量建置可能有 10–15% 的邊際改善,但救不了每次 job 冷啟動。記憶體供應短缺下,M5 大記憶體 SKU 可能更貴——先算 TCO,別被發表會敘事帶走。

actions/cache 快取 DerivedData 夠用嗎? WWDC 季通常不夠。Xcode 主版本切換後 cache key 失效;且上傳/下載數 GB DerivedData 的網路時間,相較持久 Runner 本機磁碟通常更不划算。

beta 不穩定導致 CI 一片紅怎麼辦? 這是預期中的情況。beta Runner 不應阻塞 main 合併;將 beta 流水線設為 optional status check,或僅排定 nightly 執行。

與去年 WWDC 相比,2026 特別在哪? 三件事疊加:AI SDK 膨脹、桌面 Mac 缺席、記憶體供應鏈緊張。單一因素都可應對;三者疊加則「慢」容易被誤判為「機器不行」,引發錯誤的硬體採購或盲目加購託管分鐘。

WWDC 帶來新 SDK,算力不必等到秋季

正式釘 Xcode 16,beta 上專用 Runner——Nuvcloud M4 Mac mini 48 小時日租試跑 → self-hosted 加速指南

LIMITED 限時優惠