GitHub 公告指出,Xcode 27 runner image 執行於 macOS 27,目前屬於 public preview,且僅支援 arm64;官方公告也提醒你,不能把它視為已永久供應的固定選項。
用量零散、想少維護 → 先估 GitHub-hosted macOS runner;構建穩定或環境特殊 → 把自建 Mac 的閒置、維護與故障成本加入比較。不要只看單次 runner 費率,應以目前帳單與實際構建記錄重算。

適合維護 Xcode CI、需要控制構建預算的 iOS/macOS 團隊負責人。
也適合規劃 runner 架構的平台工程師,以及想以可預測方式完成 Apple 平台 CI 的獨立開發者和小團隊。

先按構建場景選 runner

Xcode 27 GitHub Actions runner 適合什麼專案,取決於構建頻率、環境要求與失敗後的恢復方式,而不是只看「能不能跑 Xcode」。GitHub 的公告列出 preview 狀態與架構限制;正式採用前,還要核對macOS runner 支援清單及Xcode 27 image 的軟體清單。

  • 偶發構建、短期驗收:託管 runner 優先評估。你不必為低頻任務長期保留一台 Mac,也可減少作業系統與工具鏈的日常維護。不過,preview 狀態、image 更新和實際供應情況都可能影響排程;若發布流程不能容許環境變動,應先用代表性專案驗證。
  • 持續且穩定的構建負載:比較自建 Mac。當工作持續佔用設備,固定資源的利用率可能改善;但硬體採購或租用、空閒時段、系統更新、監控,以及故障時的替換安排,都不能從帳上省略。
  • 依賴特殊工具或存取控制:自建 Mac 的適配度較高。需要自訂工具、受控網路或特定憑證管理方式時,自管 runner 可提供更多環境控制;相對地,你也必須負責設備狀態與 runner 安全。
  • 尖峰才需要額外容量:採混合執行。讓穩定、具特殊要求的工作留在自建 Mac,將臨時併發或短期驗收分流到託管 runner。前提是 workflow 能清楚指定標籤、任務有安全邊界,而且團隊知道託管環境不可用時如何回退。

Xcode 27 的 GitHub-hosted runner 適合什麼項目?若你的專案可接受 public preview 的供應與環境變化,需求集中於標準 Xcode 構建,且不需要控制實體設備,可以納入短期測試;若要求長期固定映像、特殊依賴或硬體層控制,先不要把 preview runner 當作唯一發布路徑。

比較完整成本,而非單次費率

GitHub Actions macOS runner 和自建 Mac 怎麼算總成本?先把帳單和內部投入放進同一個期間,再比較單位成功構建成本。GitHub 的runner 定價說明列出計費規則;runner 類型、帳戶方案與當期價格都應以該頁及你的帳單為準,這裡不預填費率。

託管 runner 的期間成本:

託管成本 = 成功構建用量 × 當期費率 + 失敗重跑用量 × 當期費率 + 其他計入帳單的 Actions 用量

自建 Mac 的期間成本:

自建成本 = 設備購置或租用 + 維護工時 + 閒置資源成本 + 監控與網路 + 故障停機損失 + 故障恢復與重跑成本

混合方案的期間成本:

混合成本 = 自建常態負載成本 + 託管尖峰用量成本 + 兩種環境的維護與整合成本

要讓比較可重算,請以同一段時間的資料填入變數:B 為成功構建次數、T 為每次實際 runner 用量、R 為失敗重跑用量、P 為官方當期費率、M 為自建 Mac 設備成本、O 為維護與監控投入、I 為閒置成本。託管部分可先估為 (B × T + R) × P;自建部分則估為 M + O + I + 故障恢復成本。把你目前的實際數值填進去,不要以理想化的零故障或滿載假設代替。

GitHub-hosted runner 的單次帳單不是全部成本:排隊延遲、失敗重跑、維護工時和閒置設備,可能落在不同帳戶或根本沒有直接列帳,但都會影響交付成本。

GitHub Actions macOS runner 和自建 Mac 的總成本,應採用哪段用量?用近期具有代表性的構建記錄,分開看成功、失敗重跑與尖峰併發;如果團隊正在遷移或剛更換 Xcode,需另外標示過渡期,避免把短期異常當成長期平均。官方計費文件可用來確認目前費率和計費方式,但不會替你計入自建設備的內部維護工時。

模擬器、簽名與發布驗收分開估

Runner image 出現 Xcode,不代表整條 iOS 交付鏈路已驗收。把任務拆開記錄,才看得出差額來自哪個環節:

  • 編譯與單元測試:記下不同 runner 上的實際用量、排隊時間及失敗重跑;不要用一次成功構建推定長期成本。
  • 模擬器測試:確認指定 runtime 和所需工具是否包含於image 軟體清單,並在 workflow 中執行你的測試,而非只確認映像名稱。
  • 簽名憑證與 provisioning profile:確認憑證保存、存取範圍、更新和撤銷流程;Apple 的開發 provisioning profile 指南可協助核對 profile 的建立要求。
  • 構建產物與發布驗收:分開測試產物保存、下載、簽名驗證與發布流程。runner 能編譯,不等於產物已通過簽名和交付檢查。

自建 Mac CI 需要計入哪些維護成本?除了硬體與租用費,至少記錄系統升級、Xcode 與依賴更新、runner 監控、憑證輪替、網路與磁碟空間管理,以及設備故障後恢復所需的人力。GitHub 的自託管 runner 文件說明了自管 runner 的配置與維護責任;安全使用指引則提醒你檢視 workflow 的信任邊界和執行風險。

自建 runner 不應因為「在自己的網路內」就被視為天然安全。先依 workflow 來源與權限限制可執行的工作,再決定憑證如何注入和撤銷。

五步完成成本估算

  1. 盤點 workflow。列出構建、測試、簽名、發布等工作,記下 runner 標籤、必要工具、併發需求與是否接觸敏感憑證。
  2. 匯出實際用量。按相同期間整理成功任務與失敗重跑,補上排隊和人工介入記錄;使用 GitHub 的Actions limits 說明核對會影響工作流程的限制。
  3. 核對 runner 條件。對 Xcode 27,逐項確認 preview 狀態、arm64 架構、macOS 版本與映像內工具;再用自己的專案執行模擬器、簽名和產物驗收。
  4. 填入當期費率與自建成本。從官方計費頁和帳戶帳單取得託管費率;自建端填入真實設備支出、維護工時、閒置與故障恢復成本。本站沒有可核實的 CI 實測記錄及當站定價資料,因此不提供虛構的配置、租期或構建費用。
  5. 做敏感度比較。分別使用低用量、目前用量和尖峰用量重算;如果結論只在設備滿載或零重跑時才成立,就不應將該結果當作可靠預算。

決策分支與情境評分

以下評分是依維護責任、環境控制和用量彈性作出的定性判斷,不是本站效能實測,也不代表固定價格比較。

  • 偶發構建/短期驗收:GitHub-hosted runner 適配度高,自建 Mac 低。若你沒有長期維護設備的人力,而且目前 runner image 符合需求,先用小範圍 workflow 驗證;不符合架構或依賴條件,就改採自建或混合。
  • 固定、持續的構建負載:自建 Mac 適配度較高,但須先證明利用率。若實際用量能攤平設備和運維成本,再比較自建;若構建常有空檔或無人負責故障處理,回到託管方案估算。
  • 環境控制或自訂依賴優先:自建 Mac 優先評估。若安全政策容許把任務放在託管環境,且官方 image 已包含所需工具,可再比較託管成本和維護負擔。
  • 基準負載穩定、尖峰不穩:混合 runner 優先評估。把可預測且需要控制的工作放在自建端,尖峰彈性需求交由託管端;若拆分後的權限、標籤和故障回退難以管理,先簡化 workflow,再導入混合架構。

iOS 團隊什麼時候應採用混合 runner?當常態構建能穩定使用自建容量,但短期驗收或尖峰併發又會造成排隊,可以試行混合;必須先設定任務路由和回退條件,並把兩側的維護與整合成本一併記帳。

從方案估算到 Mac 環境準備

若你目前全用 GitHub-hosted runner,主要要留意單位用量的帳單變化、preview 或 image 調整造成的相容風險,以及尖峰時的排隊與重跑。改為完全自建,也不會讓成本消失:設備閒置、系統更新、監控與故障恢復會變成團隊的責任。對於用量仍在變化、但需要短期增加 Mac 構建容量的團隊,租用 Mac 可先用實際工作流驗證環境,再按當下需求比較租用條件;可先查看 SSHMac 的 Mac 環境與服務資訊,並透過說明中心確認交付方式。若團隊需要長期固定負載、設備周邊控制或特定本地網路,購置並自行管理設備仍可能更合適;任何方案都應以當期價格和實際用量重算。