建置畫面顯示的時間,和月結時看到的 Xcode Cloud 用量對不上。
最快的解法是先匯出 App Store Connect 的團隊及應用用量紀錄,再按工作流與並行方式建立基線;不要用單次建置的牆鐘時間直接推算 compute hours。

企業 IT 負責人:需要為 iOS CI/CD 預算提供可稽核的容量依據。
研發效能負責人:需要辨認哪些工作流與並行設定正在消耗用量。
FinOps 或採購負責人:需要比較訂閱可用額度與團隊實際任務需求。

先用計量口徑建立 Xcode Cloud 企業 CI 用量估算

Apple 以 compute hours 計量 Xcode Cloud 用量;使用者看到的建置經過時間則是牆鐘時間,兩者不一定相同。預算基線應優先採用 App Store Connect 記錄的實際用量,建置時長適合用來比較工作流與追查變化,不適合直接代替計量數值。Apple 的用量說明亦指出,用量時間可能與建置時長不同。

本文估算的範圍是 CI 工作流執行,不包含開發者在本機使用 Xcode 的時間。若把本機編譯、手動測試或其他非 CI 作業混入月度用量,預算就無法與帳務資料核對。

先將兩種觀察值分開記錄:

  • compute hours:App Store Connect 顯示的 Xcode Cloud 計量用量,作為額度和預算計算的依據。
  • 建置牆鐘時間:工作流從開始到完成所經過的時間,用於觀察開發者等待時間及診斷工作流變化。
  • 觸發與執行資訊:Build Runs、工作流名稱、觸發來源及執行狀態,用於把用量變化連回具體 CI 任務。

Apple 提供查看團隊與應用用量及匯出 CSV 的方式;工作流與 Build Runs 的欄位,則可參照 App Store Connect 工作流資料說明及 Build Runs 資料說明核對。

提醒:匯出檔若沒有直接呈現所需的工作流欄位,不要把應用層級用量硬拆成精確的工作流成本。先保留缺漏標記,再以可追溯的 Build Runs 或團隊內部紀錄補足。

再按工作流負載整理可稽核的用量紀錄

單一月總額不容易說明為什麼用量增加。應先按執行目的分組,再記錄每組工作流的觸發頻率、執行動作與 App Store Connect 用量變化。

工作流類型 應記錄的觸發與動作 用量核對方式
PR 驗證 觸發來源、編譯或測試步驟、是否採用並行測試 對照相關 Build Runs 與用量匯出,保留牆鐘時間作為診斷資料
自動化測試 測試範圍、測試環境與執行方式 比較工作流設定變更前後的實際計量紀錄
歸檔 歸檔與簽署相關步驟、觸發條件 與發布工作流分開標記,避免合併後看不出消耗來源
發布 發布觸發來源、執行步驟與相應 Build Runs 以團隊紀錄對照 App Store Connect 匯出資料,標註尚未能歸因的部分

操作上,先統一統計週期、應用範圍與工作流命名,再把每筆匯出資料保留來源及匯出日期。若團隊有改過觸發條件、測試內容或並行設定,也要註記生效時間;否則即使總用量正確,也可能把設定變動誤判成團隊需求自然成長。

工作流設定可參照 Apple 的 Xcode Cloud 工作流參考;若團隊仍在整理工作流定義,可用 首次設定 Xcode Cloud 工作流的說明核對觸發與執行設定。

再驗證並行測試對月度用量的影響

並行測試可能使 compute hours 與單次建置牆鐘時間出現差異,因此不能把「多開一個並行工作」視為固定倍數的用量增加。實際影響要用團隊自己的工作流紀錄驗證;Apple 的用量資料說明應作為計量口徑,而不是以畫面上的等待時間代替。

建議採取受控比較:選定工作流,記下修改前的設定、建置結果與 App Store Connect 用量;調整並行設定後,在觸發方式和任務內容可比較的條件下再收集紀錄。若同時改動測試範圍、依賴或觸發頻率,就不能把用量差異單獨歸因於並行。

常見問題:從牆鐘時間到工作流用量

Xcode Cloud 的 compute hours 和建置實際耗時有何不同?
前者是 Apple 用來記錄 Xcode Cloud 用量的指標,後者是一次建置經過的時間。並行任務會令兩種觀察值不一定一致,因此預算以計量紀錄為準,牆鐘時間用於工作流分析。

怎樣查看每個應用與工作流的 Xcode Cloud 用量?
App Store Connect 可查看團隊及應用層級用量並匯出 CSV;若要對應到工作流,還須整理工作流名稱及 Build Runs。兩種資料對不上時,應註明無法歸因的部分,而非估算成確切數字。

並行測試會怎樣改變月度用量?
它可能令計量時間與牆鐘時間不同,但不應僅以並行數推算固定倍數。團隊應比較同一工作流調整前後的計量紀錄,並確認觸發條件與任務內容相近。

什麼情況適合把部分 CI 任務移到遠端 Mac?
當用量或額度無法匹配需求,或特定任務需要更強的環境控制時,可評估小範圍試點。若工作流穩定且符合 Xcode Cloud 的執行方式,先留在雲端通常更容易控制維運範圍。

用團隊紀錄推算月度額度覆蓋與預算缺口

完成基線後,將歷史用量依工作流分類,並分別建立保守、基準與高峰情境。情境差異應來自可說明的變數,例如發布週期改變、工作流觸發頻率調整或團隊規模變化;沒有歷史紀錄支持的平均建置時間,不應用來填補預測。

可用以下口徑整理模型:

  • 歷史基線:採用選定統計週期內的已計量用量,清楚標示應用與工作流涵蓋範圍。
  • 需求情境:逐項列出可能改變用量的工作流與觸發變數,不將假設混寫成已發生的用量。
  • 額度覆蓋率:以可用訂閱額度與預估需求對照,並標記高峰情境下可能出現的缺口。
  • 預算項目:記錄訂閱額度、可能的額外用量成本,以及團隊需投入的追蹤和維運工作。

Apple 的 Xcode Cloud 計畫頁面可能隨時間更新,實際可購額度與價格應在採購或編列預算時重新核對,不能把舊資料當成現行條件。若團隊使用的 Xcode 版本或執行環境也會影響工作流適用性,請另行核對 Apple Xcode 系統需求。

用可勾選條件決定保留、試點或混合執行

遠端 Mac CI 不只是另一種計費方式,也會帶來環境設定、帳號權限、憑證管理、節點監控與故障處理責任。成本比較時,除了額度與租用費,也要把這些維運工作、環境可控性與任務穩定性列入;在沒有可核實的服務價格與同任務實測前,不應宣稱某方案必定節省特定比例。

  • [ ] 已從 App Store Connect 匯出團隊及應用用量,並標明統計週期與資料來源。
  • [ ] 已將 PR 驗證、自動化測試、歸檔與發布等工作流分開記錄。
  • [ ] 已把牆鐘時間與 compute hours 分欄保存,沒有以單次建置耗時代替計量用量。
  • [ ] 已標註並行設定變更及其前後的工作流紀錄,沒有直接套用固定倍數。
  • [ ] 已按團隊紀錄建立不同需求情境,並檢查額度覆蓋及高峰缺口。
  • [ ] 已評估環境控制、私有依賴、任務穩定性與新增維運責任。
  • [ ] 若準備試點,已選定可單獨衡量的任務,並定義用量、穩定性與維運的比較依據。

若前幾項資料尚不完整,應先補齊基線,而不是立即採購或遷移。若只有少數工作流出現額度或環境控制問題,可以維持一般任務在 Xcode Cloud,另行評估這些任務是否適合遠端 Mac;若任務長期穩定、但團隊不想承擔節點維護,也沒有必要為追求形式上的自建而轉移。

Xcode Cloud 可減少團隊自行管理建置節點的工作,但額度與用量必須持續對照,環境控制也受工作流平台能力限制;遠端 Mac 則需另外承擔權限、憑證、網路連線與故障維護。只有在用量基線已清楚、特定任務確有遷移理由,且團隊能驗收其實際運行結果時,才值得把部分工作移出雲端。若要先確認可用的遠端 Mac 租用方式,可參閱 RUVCLOUD 遠端 Mac 方案,再用小範圍試點評估節點是否符合任務需求;之後也可查閱 RUVCLOUD 的方案與計價資訊,依實際紀錄評估成本。不需要長期節點、需要本機實體介面,或無法承接額外維運的團隊,則應保留現行流程並重新檢視工作流用量。