① 目標人群與三類痛點
目標人群:五人內、少量遠端 Mac兼 CI/除錯。關鍵詞:遠端 Mac、Git Worktree、並行構建、鎖檔、衝突。痛點:並寫鎖檔;CPU/記憶體飽和假性失敗;誤清簽章與共用快取拖累全池。
② Git Worktree 與單一版本庫多工作區對照
Git Worktree:同庫多目錄、多分支,共用 .git;手動多資料夾易不同步與誤提交。
| 面向 | Git Worktree | 單倉手動多資料夾 |
|---|---|---|
| 分支隔離 | git worktree list 可稽核 |
易混路徑、漏拉提交 |
| 依賴目錄 | 每樹獨立 Pods/node_modules |
共用上層目錄則互寫風險高 |
| 磁碟/維運 | 多份依賴須清理政策 | 手動複製長期易成灰區 |
③ CocoaPods/npm 等鎖檔策略
原則:單寫者、多讀者;寫鎖檔須序列化或分 worktree。
| 生態 | 鎖檔/關鍵檔 | 共享機建議 |
|---|---|---|
| CocoaPods | Podfile.lock |
CI 只讀安裝;升依賴用專用 worktree,禁並寫同鎖檔 |
| npm | package-lock.json |
優先 npm ci;禁並行 install 改鎖 |
| Yarn/pnpm | 各鎖檔檔名如上 | 釘管理器版本;快取按 BUILD_ID 分桶 |
實驗性解析須檔案鎖/佇列,日誌附分支與 BUILD_ID。
④ 並發上限與佇列
資源池:archive 同機上限 1;輕量 job 在 CPU <75%、可用記憶體 >8 GB 可試 2。單池 pending >20 熔斷。詳見Runner 矩陣。
⑤ 決策矩陣與參數閾值
矩陣:在協作、速度、穩定性間取捨;先保守再放量。
| 情境訊號 | 建議策略 | 參數/閾值(起點) |
|---|---|---|
| 多分支 PR | 分支獨立 worktree + 唯讀鎖檔安裝 | 路徑含 BRANCH+BUILD_ID |
| 鎖檔衝突升溫 | 升依賴單時段;餘凍結解析 | 互斥逾時 15~30 分 |
| 磁碟/I/O | 排程清 worktree 產物 | 可用率 <15~20% 清;快取 30~80 GB 級檢討 |
| 簽章互鎖 | 該步驟全域序列化 | 同路徑 1 活躍任務 |
⑥ 回滾與清理 FAQ
Q:回滾? 刪問題 worktree 後自遠端重建;鎖檔以已審版本為準,勿動他人主工作區。
Q:何時刪 worktree? Pipeline 結束後保留 3~7 日可清;發版機可 24~48 小時。
Q:清理風險? 白名單只清產物/快取;禁盲 rm -rf。配額見資源池 FAQ。
⑦ 落地步驟與可引用參數
落地五步
- 訂 worktree 根目錄與命名(分支+BUILD_ID)。
- CI 進專屬目錄後唯讀鎖檔安裝;升依賴僅允許特定 job。
- 寫鎖檔步驟互斥/佇列,日誌記持有者。
- 併發上限與 pending 告警對齊 Runner 標籤。
- 排程清理+磁碟低水位通知。
可引用參數
- 重度並發起點 1;輕量試 2(監控 CPU/記憶體)。
- pending 熔斷約 20;worktree 保留 3~7 日(發版機 24~48 小時)。
遠端 Mac · 共享構建池
用可預測的並行與鎖檔政策,換團隊穩定產出
Meshmac 多區遠端 Mac;單機不敷時以多節點池降鎖檔與簽章互鎖。購買頁免登入。
Worktree 協作
鎖檔治理
併發與佇列
多節點擴展