截至 2026 年 11 月 2 日,GitHub 將退役 macOS-14、macOS-14-large 與 macOS-14-xlarge Runner 標籤。官方退役公告 已確認期限與範圍;本週應先依專案相容條件選替代 Runner,用同一條發布工作流程隔離驗證,再分批切換正式任務並預備可執行的回退方案。關鍵發布工作無法通過驗收時,先核實備用 Mac 承載條件,不要等到標籤退役才處理。

本文適合管理 GitHub Actions iOS 發布流水線的 IT、平台工程與發布負責人。
若您負責 Xcode、應用程式簽名,或 Mac CI 預算與容量,也可按以下驗收路徑安排遷移。

最後更新於 2026 年 10 月 26 日;退役範圍與日期核實自 GitHub 官方公告、Runner 選擇文件及 Runner 映像倉庫。正式切換前仍須重查標籤、映像與團隊自己的執行日誌。

01

遷移起點:先定發布基線,再排任務優先級

macOS-14 Runner 的遷移不是只改 YAML 標籤。Runner 標籤表示工作流程的選擇條件,不會單獨保證實際映像、處理器架構、Xcode 工具鏈或簽名環境符合專案要求。GitHub 也提供不同 Runner 選擇方式;實際可用標籤及其含義應以官方 Runner 選擇文件和映像資訊為準。

先從一條真實的 iOS 發布工作流程建立比較基線,記錄目前的 Runner 標籤、日誌中實際選用的 Xcode、依賴解析結果、建置產物、歸檔、簽名及上傳步驟。若現有日誌沒有留下這些證據,先補足紀錄,不要直接把新舊流程的「成功」當成等價。

接著按發布風險排序,而非按 YAML 檔案排列:

  • 正式簽名與上傳:涉及發布憑證、佈建描述檔或商店上傳,放在優先驗收項目。
  • 模擬器測試:核實執行環境和測試結果,確認測試範圍沒有因 Runner 或 Xcode 變動而縮減。
  • 一般建置:可先遷移,但仍需檢查依賴解析、編譯結果與產物內容。

Xcode 可用版本受 macOS 系統要求等條件限制,不能只依 Runner 標籤推斷。請按專案目前使用的 Xcode,對照 Apple 的 Xcode 系統要求;再從工作流程日誌核實實際選用版本與映像。這一步可以提早暴露「標籤已換、工具鏈卻不合」的問題。

02

隔離驗證:macOS-15 Runner 與其他候選環境逐項核對

macOS-15 Runner、macOS-26 Runner 或其他替代標籤,都只能視為候選環境。GitHub 公告列出的替代建議不是所有專案必然相容的保證。先查看公告及官方 Runner 映像倉庫中的現行標籤與映像內容,再以專案實際使用的 Xcode、系統與架構條件篩選。

隔離工作流程的驗收順序

使用非生產分支或隔離工作流程,固定同一份程式碼提交,避免新舊流程因程式碼不同而失去比較價值。依序執行:

  • 解析套件與私有依賴,確認登入、憑證及網路存取仍可用。
  • 執行專案原有建置命令,記錄 Xcode 版本與 Runner 實際環境。
  • 執行必要測試,對照原有測試範圍與結果。
  • 產生正式發布所需的 archive,確認產物可被後續匯出流程使用。
  • 驗證簽名與匯出結果。參照 Apple 的簽名程式碼建立與發行文件檢查簽名相關要求。
  • 驗證上傳步驟的權限與結果,但不要讓隔離流程直接發布到正式渠道。

簽名不只是建置結束時的附加檢查。若新 Runner 找不到預期的憑證、金鑰或佈建描述檔,流程可能在歸檔或匯出階段才失敗。隔離驗證應使用專用測試憑證或受控的測試路徑,並確認測試工作流程沒有取得不必要的正式發布秘密。可依 GitHub 安全使用說明檢查秘密管理與工作流程權限。

03

正式切換:小批放行並保留停止條件

隔離流程通過,不代表可以一次更改所有正式工作流程。先挑選已完成基線比較、回退路徑清楚、且不會造成不可逆發布結果的任務。每一批切換前,記錄負責人、預期 Runner、驗收證據與停止條件;切換後確認日誌反映的是預期標籤和實際環境。

正式發布應使用環境保護規則與必要審核,避免測試流程取得生產發布權限。GitHub 的部署環境保護文件說明可用的保護機制;同時要檢查工作流程的並行設定,避免重複執行或取消行為影響發布。相關設定可對照 GitHub Actions concurrency 文件。

遷移時可直接使用以下核對清單:

  • [ ] 已保存原流程的 Runner 標籤、實際 Xcode、依賴解析與建置日誌。
  • [ ] 已確認候選 Runner 標籤與映像資訊仍有效,並核對 macOS、架構及 Xcode 條件。
  • [ ] 隔離流程使用同一程式碼提交,完成依賴解析、建置、測試與歸檔。
  • [ ] 已驗證簽名、匯出及上傳所需權限,且測試流程不會觸發正式發布。
  • [ ] 已定義失敗時停止放量的條件,以及回到已驗證承載方式的操作步驟。
  • [ ] 每批切換後已核對實際 Runner、工作流程結果與產物,並保存可供稽核的紀錄。

若任一項未完成,先停在隔離或小範圍驗收,不要以「工作流程沒有報錯」替代發布證據。尤其不要把 macOS-14 標籤保留為唯一回退手段,因為它有已公告的退役期限。

04

常見問題:標籤更換、發布驗收與回退

macOS-14 Runner 退役前,先改哪些工作流程?

優先找出產生正式歸檔、使用發行簽名憑證或執行上傳的工作流程,再安排一般建置與測試任務。逐條確認實際 Runner、Xcode 選擇、依賴解析和失敗回復步驟。只改標籤而未核對實際執行環境,無法證明發布流程已遷移完成。

由 macOS-14 換到 macOS-15 或 macOS-26,如何驗證 Xcode 建置?

先以官方標籤與映像資料確認候選環境,再在隔離工作流程查看實際 macOS、架構和 Xcode 版本。使用同一程式碼提交執行依賴解析、建置、測試與歸檔,對照原有日誌和產物。標籤名稱本身不能證明專案相容,候選環境也要以團隊實際結果驗收。

正式發布前,怎樣驗收 iOS 歸檔、簽名和上傳?

以不會觸發正式發布的測試路徑產生歸檔,再核對簽名身分、佈建描述檔、匯出結果與上傳權限。保存日誌及產物檢查紀錄,確認測試工作流程沒有取得不必要的正式憑證。單看建置成功狀態不足以放行發布。

Runner 遷移失敗時,如何回退或承接關鍵任務?

先停止擴大切換,保留已驗證的流程設定與產物,並將關鍵工作交回仍可用且已核實的承載方式。不要把即將退役的 macOS-14 標籤當作長期回退方案。若需備用 Mac,先用真實發布任務確認環境、權限、網路需求與恢復步驟。

05

備用承載:以真實發布任務驗收遠端 Mac CI

若個別任務在候選 Runner 上無法通過驗收,先具體說明受阻條件:是否依賴特定 macOS 或 Xcode、是否需使用簽名憑證、是否要求特定網路連線,或是否需要持續可用的建置節點。再評估企業遠端 Mac CI 是否能滿足這些條件。沒有可核實的環境與交付資料,就不應把任何備用方案寫進容量承諾。

我們不以通用規格取代實際驗收。可先用一條非生產發布工作流程測試依賴、建置、歸檔與簽名,再確認團隊能否安全管理憑證與存取權。若團隊正在比較不同地區的雲端 Mac 採購選項,可先核對香港雲端 Mac mini 採購資訊;該頁所列條件仍須與實際工作負載及交付需求逐項比對。

把驗收結果整理為一份記錄:工作流程版本、實際執行環境、建置與簽名結果、未解決限制、失敗後的接手方式,以及責任人。用這份證據判斷是增加備援、調整工作流程,還是維持原有 Runner 方案;不要在測試完成前推定配置、價格或服務能力。

06

遷移決策:按已驗收結果結束放量

當替代 Runner 已完成同流程驗證,正式任務也能逐批切換,遷移才算具備可操作的退出條件。若只有一般建置成功、但簽名或上傳尚未測過,應將發布工作保留在已核實的承載方式,直到關鍵鏈路有證據支持放行。

與繼續依賴單一託管 Runner 相比,備用 Mac 方案能提供另一種承載選擇;但仍需納入環境核對、憑證治理與節點管理。若現行方案面臨退役日期、映像或工具鏈變動、以及關鍵任務缺少已驗證回退路徑,您可評估租用 MESHLAUNCH 的 Mac 作為候選備援。先從遠端 Mac 方案頁面核對頁面當前列出的條件,再以真實發布工作流程完成驗收;若工作負載長期穩定且需要高度可控的固定實機環境,自購 Mac 也應列入比較。