決策矩陣 · 團隊 CI

2026年共享遠端 Mac 構建池決策矩陣:GitHub Actions 自託管 Runner 標籤路由、併發排隊與衝突處理清單

2026.03.25 Meshmac 約 6~8 分鐘閱讀

小團隊與共享構建機自託管 Runner 之外還需標籤路由併發排隊與衝突規則,團隊 CI 才可控。本文整理何時分佇列標籤命名併發上限磁碟清理閾值與監控要點;延伸見SSH/VNC 選型穩定性 FAQ幫助中心

① 共享池目標與風險

共享遠端 Mac 池通常要兼顧 PR 回饋、可重現發版與公平取用;常見風險是資源互搶、簽章/鑰匙圈碰撞,以及「queued」卻分不清是標籤、容量還是鎖。

自託管 Runner 當排程端點:須有人負責升級、Xcode 釘選與緊急排空;同機若有 VNC 使用者,衝突風險更高。

情境 建議
兩條產品線需要不同 Xcode/macOS 基線 分佇列:各自 Runner + 標籤路由,避免 workflow 誤選工具鏈。
重度 CI 與 VNC 除錯常重疊 分佇列或分節點:CI 專用機或時段,避免人機互搶延遲。
發版 archive 需要容量保證 分佇列release 類 workflow 只打到有專用 Runner 的標籤,不接 PR 雜訊。
僅單一 Xcode、併發低、衝突少 維持單一佇列:先量測再結構化,避免過早複雜化。

② 標籤路由對比矩陣

標籤路由決定哪台自託管 Runner 可接 job;命名混亂易誤路由或閒置硬體。生產 workflow 請用穩定、可機讀標籤。

路由型態 最適合 取捨
廣域池macosarm64 機隊同質、Xcode 單一釘選、追求利用率 難以為發版預留容量;任何 workflow 都可能吃掉 Runner。
工具鏈範圍xcode-16-2swift-6 儲存庫鎖定特定編譯器/SDK 行為 Runner 與標籤需跟升級行事曆同步,維運成本較高。
SLA 分層ci-prci-release PR 檢查與出貨構建分流 每一層背後都要有足夠硬體;空層會讓 job 永遠等不到 Runner。
租戶/小組切片team-mobilerepo-core 計費分攤或嚴格爆炸半徑隔離 切片填不滿時利用率偏低;營運條目變多。

標籤命名規範(建議)

  • 最低組合:osarchxcode-<主版.次版>,例如 macosarm64xcode-16-2
  • 可選角色後綴:ci-prci-releaseexperimental在未遷移視窗下把同一角色標籤改指不同 Xcode。
  • 保留 GitHub 預設如 self-hosted,並在內部 wiki 與儲存庫 README 維護唯一真實來源標籤表,供撰寫 workflow 的同事對照。

③ 排隊與鎖策略

併發排隊同時受 GitHub 語意、單機資源與簽章互斥約束;建議保守起步,有指標再放寬。

政策項目 建議起點 備註
併發上限(重度編譯/archive) 同類 Mac 上 1 個活躍 job 要在單機長期平行多個 archive,先加第二台節點再談。
併發上限(輕量檢查) CPU 持續低於約 75% 且可用記憶體常態大於約 8 GB 時,可試 2 job 搭配 workflow concurrency: 取消過期 PR 構建。
單池全局待處理深度 每池 pending 超過約 20 筆要熔斷或轉人工 避免靜默排隊數小時;應轉成告警與容量決策。
互斥/鎖 同一鑰匙圈路徑上,簽章或公證流程同時只跑一條 可用檔案鎖、Redis 或組織核准的 action,保證不可重入步驟序列化。
FIFO、配額與衝突場景可再對照共享資源池 FAQ

④ 權限與隔離要點

權限模糊易釀成靜默失敗:建議專用 CI 帳號、分隔家目錄、自動化鑰匙圈,並文件化共享目錄擁有權/ACL。

磁碟清理閾值:CI 卷可用低於 15~20% 觸發 DerivedData/快取清理;單一大型 App 快取長期超過約 30~80 GB(視 SSD)亦應處理;保留 ~/Library/Keychains 與簽章資產,禁用無白名單 rm -rf。細節見權限 FAQ隔離指南

⑤ 監控與告警

監控:Runner 心跳等待時間(建立→開始)、資源飽和、認證失敗。PR SLO 常設 10~20 分鐘;磁碟低於清理閾值持續數分鐘應告警。

「CI 不穩」有時實為 SSH 逾時或維護窗;請對照穩定性 FAQ重連檢查清單

⑥ FAQ

標籤能取代真正的佇列產品嗎?
不能。標籤只是篩選器;當同時符合標籤的 job 多於 Runner,自然形成排隊。若需要跨儲存庫優先權、截止日或公平份額,請結合 concurrency 與外部協調,或將池拆到多台遠端 Mac

一台機器應註冊幾個 Runner?
重度 iOS/macOS 構建通常每台一個 Runner 服務;多 Runner 若無嚴格上限,會同步放大磁碟與模擬器爭用。

什麼訊號代表該上多節點或團隊方案?
反覆 SLO 破表、簽章步驟常態衝突,或例行維護一次卡死所有儲存庫——這些屬於結構問題,靠微調標籤治標不治本,應增加節點或發版專機。

下一步:擴展多節點與團隊方案

單機標籤路由併發排隊不足時,應拆 PR/發版池、按節點釘 Xcode。請至首頁比較多節點/團隊方案購買頁(免登入)、幫助中心接入;進階見負載均衡Runner 與租用成本

多節點 · 團隊 CI

用標籤與排隊政策管好共享池,再按需加節點

Meshmac 提供多區遠端 Mac 與多節點文件;單機 Runner 飽和時,以團隊/多節點方案分流可降低衝突與等待。

標籤路由 併發排隊 磁碟閾值 團隊方案
瀏覽方案・多節點/團隊