維運與稽核 2026年4月14日

2026 決策矩陣:Mac mini M4 CI Runner 上的 Git Worktree 與乾淨克隆

NodeMac Team

建置基礎設施編輯

檢出策略是每條 macOS 流水線背後的隱形放大器:同一台 Mac mini M4 使用 git worktree 可能感覺「夠快」,而一旦 DerivedData 在作業間外洩就會「莫名不穩」。2026 年,團隊若發布明確的 worktree 對乾淨克隆 政策,可同時縮短排隊時間 降低稽核風險。本文提供兩張矩陣、量化磁碟預算、八步上線路徑,以及可貼入內部運行手冊的 FAQ 結構化資料。

將本政策與 磁碟與產物留存容量包絡Runner 親和規則 搭配。若需在香港、日本、韓國、新加坡或美國增加專用主機,請從 定價 起步,並常備 說明 以查閱 SSH/VNC 接入模式。

為何檢出模式是排程問題,而不只是 Git 細節

自架 macOS Runner 預設帶狀態:全域快取、使用者層級鑰匙圈項目,以及 Xcode 預設 DerivedData 路徑會在作業間保留,除非你做隔離。每作業乾淨克隆能隔離 Git 物件,卻無法自動隔離編譯器。Worktree 共享單一物件資料庫——更快——但會放大清理腳本中的任何錯誤。請將檢出模式納入與密鑰、簽章身分並列的 爆炸半徑 敘事。

  • Worktree 在多條分支建置同一修訂流時,可最小化 git fetch 位元組數。
  • 乾淨克隆 在儲存庫檢出後會修改樹外工具的後置勾點時,可最大化隔離。
  • 常見於規模化的 混合 模式(熱裸鏡像 + 暫時 worktree)需要嚴格的路徑慣例。

決策矩陣 A:選擇 worktree、乾淨克隆或混合

儲存庫訊號 建議模式 注意點
單體儲存庫、高變更、共享 Xcode 版本 混合(裸鏡像 + worktree) 必須以 -derivedDataPath 依 worktree 釘選 DerivedData
小型應用、依賴少、需要可重現性 每作業乾淨克隆 留意 LFS 頻寬;在主機快取 blob 並做校驗驗證
綁定硬體身分的發布簽章 專用主機 + 乾淨克隆 切勿讓不受信任 fork 與 worktree 基座共享
外部貢獻者的 fork PR 建置 唯一路徑下的暫時克隆 跨信任邊界停用共享裸鏡像

決策矩陣 B:快取放置與外洩風險

檢出模式決定 Git 物件放在哪;快取放置決定 下一作業仍保留什麼。兩者未對齊時,會出現「明明乾淨克隆卻仍透過全域路徑外洩編譯器狀態」的情況。

快取 M4 Runner 上的安全預設 外洩症狀
Swift Package Manager 每作業將 SourcePackages 置於工作區暫存目錄下 全域快取重用且無 lockfile 雜湊時,PR 間出現版本漂移
CocoaPods / Bundler vendor 在克隆內或內容定址 tarball 快取 原生延伸建置選錯架構旗標
Xcode DerivedData 始終依作業 ID 限定路徑 另一分支的部分索引導致 UI 測試不穩定

可執行的磁碟預算(起點)

  1. 裸鏡像上限:512 GB 主機上單體鏡像控制在 120 GB 內;以可稽核腳本修剪,勿手刪。
  2. 並行 worktree:除非 IO 指標顯示持續讀吞吐有餘量,每台主機最多 4 個。
  3. 乾淨克隆暫存:git clone --depth 1 加 LFS 尖峰預留最大工作樹的
  4. 告警:CI 卷可用磁碟低於 15% 超過 5 分鐘即分頁。

稽核提示:記錄每個 Runner 組所屬信任層級。曾檢出 fork PR 的 worktree 基座,若無文件化抹除,不得再建置簽章發布產物。

八步上線路徑

  1. 儲存庫分級為可信內部、合作夥伴與公開 fork。
  2. 度量 每個層級在兩種模式下的 p95 檢出+編譯時間,跨度一個迭代。
  3. 實作路徑慣例,例如 /ci/jobs/<id>/tree,由自動化獨占。
  4. 掛載作業後勾點,刪除 worktree、DerivedData 及綁定作業 ID 的模擬器快取。
  5. 阻斷全域快取,除非以內容雜湊 + 信任層級為鍵。
  6. 增加指標:檢出秒數、LFS 百萬位元組、每台主機磁碟可用百分比。
  7. 每季兩次 演練磁碟寫滿情境。
  8. 擴展硬體:當預算迫使冒險共享時——NodeMac 可依區域增加專用 Mac mini M4 節點,無需託管 lead time。

常見問題

在共享 Mac mini M4 CI 主機上,git worktree 何時安全?

當每個 worktree 路徑依作業隔離、勾點受控、子模組已釘選,且清理會刪除 worktree 及同路徑快取時。不要將裸儲庫與開發者的互動式工作階段共享。

為何乾淨克隆仍會隨機失敗?

多為全域快取、LFS 網路問題或掃描器碰觸輸出。將快取限定在作業內,並將失敗與網路曲線關聯。

並行 worktree 需要多少額外磁碟?

為每個並行 worktree 預算一份工作樹加共享物件庫,若編譯 Xcode 專案再加每作業 DerivedData。

專用 Mac mini M4,讓 CI 更可預期

依信任層級隔離主機,自動化用 SSH,需要並排比對兩次檢出時用 VNC。

NM
NodeMac Cloud Mac
5分鐘部署

雲端專屬 Apple Silicon Mac,SSH/VNC 隨時接入,節點覆蓋港·日·新·美。

立即開始