把整包 XCTest UI 塞進單一 Job,往往是錯過發版窗口的最快路徑。需要一小時內回饋的團隊會把套件分片到多台獨享主機,各自在原生 macOS 上平行啟動 iOS Simulator。當機群橫跨新加坡、日本、韓國、香港、美東、美西,痛點多半是 Simulator Runtime 快取、CoreSimulator 磁碟膨脹與記憶體互搶——而不是「Xcode 太慢」。以下說明如何切分節點、選 Mac mini M4 檔位、設定 xcodebuild 平行測試,以及在 1TB/2TB 擴容與併聯席位之間做短中期租用決策。
一、XCTest UI 分片:跨機切什麼、單機平行什麼
建議拆三層:跨機分片(每台 Mac 跑不同 Test Plan 或 Target 子集)、單機平行(透過 -parallel-testing-enabled 與 -maximum-parallel-testing-workers 開多個 Simulator)、易 Flake 流程單獨車道(登入、支付等)。實務上常按地區或小隊一片,M4 上依 App 重量開 2~4 個 Simulator。每條發版線鎖定一套黃金 Xcode + iOS Runtime;各片 Xcode 小版本不一致,會出現「A 片過、B 片掛、程式碼沒改」的假象。
xcodebuild test \
-scheme MyAppUITests \
-destination 'platform=iOS Simulator,name=iPhone 16,OS=18.4' \
-parallel-testing-enabled YES \
-maximum-parallel-testing-workers 3 \
-only-testing:MyAppUITests/SmokeTests
GitHub Actions、Bitrise、Jenkins 等可為每片匯出 TEST_PLAN 或 -only-testing 清單,再在儀表板彙總 JUnit。純建置機不應碰 Simulator,磁碟與平行編譯水位見了解更多:雲 Mac 磁碟水位、平行編譯與六地 M4 擴容 FAQ。
二、六地節點怎麼分:新加坡、東京、首爾、香港、美東、美西
依誰要 SSH/VNC 進來查 Flake 選區,而不是簡報上的色塊。新加坡或香港適合東南亞與大中華 iOS 主力;東京錨定日本隊;首爾在韓文鍵盤、電信 Mock 重要時划算。美東配東岸產品與 nightly cron;美西配灣區 CI 的太平洋傍晚高峰。建議一週試跑:兩個候選地區用同一分片定義,比較佇列 + 測試牆鐘(含產物上傳)。主機請標「僅 UI」或「建置+UI」,避免編譯農場被 CoreSimulator 資料塞滿。
三、Mac mini M4:16GB/256GB 與 24GB/512GB(Simulator 農場)
16GB/256GB 適合精簡分片:單 Scheme、2 個平行 Simulator,並定期 xcrun simctl delete unavailable、清理 DerivedData。24GB/512GB 是 3~4 個 UI Worker 外加工程師 VNC 復現 Flake 時的預設檔。記憶體避免 Simulator + Xcode + 錄屏疊加時交換;SSD 承載 Runtime 快取與測試產物。Simulator 資料往往比編譯產物漲得快——每套保留的 Runtime 請預留 20~40 GB。
四、1TB/2TB 擴容與併聯席位
單機要長期保留多套 iOS Runtime、錄屏與稽核日誌時,NVMe 擴容更划算。週五多隊同時發版、或要真隔離(A 片不能殺 B 片的 Simulator)時,加併聯席位(多台獨享 mini)更有效。短期租用宜峰值加席 + 腳本清理:夜間 simctl shutdown all、刪不可用裝置、把 xcresult 同步到物件儲存。中期常見組合:一台 24GB + 1TB 做復現母機,外加多台 16GB 純 UI 分片。
- 平行 Worker 上限對齊 RAM,尖峰 UI 時留意
memory_pressure。 - 在映像腳本中鎖版 Simulator Runtime,各片保持一致。
- 每片保存Flake 基線,地區 DNS/語系差異較易對照。
五、短中期租用怎麼選
發版週 UI 尖峰很少需要買斷機器——按天/週租用,快照「Simulator 就緒」映像(Xcode、Runtime、憑證),分支合併後拆除。8~12 週平行功能開發時,按月錨定 24GB 主機更划算,因重裝 Runtime 與重信任金鑰的成本常高於租金。每區寫清Runbook:分片表、最大平行數、誰可 VNC、xcresult 落地位置。
在 vpszap 雲上,分片更可預期
UI 平行需要誠實磁碟的獨享 Apple Silicon——共享 VM 在三個 Simulator 同時開機時常 IO 被掐。vpszap 提供實體 M4 Mac mini、約五分鐘開通、SSH + VNC 便於查 Flake;按天/週/月/季、無長約,覆蓋本文六地——可按區一片,或在發版列車時峰值加席。
若要把上述流程跑在「像桌下那台」的硬體上(新加坡、東京、首爾、香港、美東或美西),請從 vpszap 雲端 Mac mini 起步,並在各區啟用相同映像。