Apple 的 App Store Connect API 將 Xcode Cloud 執行進度定義為 PENDING、RUNNING、COMPLETE 三種值,詳見建置執行進度欄位定義。
症狀 → 最快解法:長時間停在待處理時,先確認建置狀態與工作流程是否真的觸發,再查看 Apple Developer System Status;不要先把排隊判定為專案編譯故障。
若這些檢查仍無法解釋延遲,而且交付時程不能只依賴原路徑,再用同一提交驗證備用建置流程。自管 Mac 能提供另一條建置路徑,但不能保證消除 Xcode Cloud 服務端延遲。
適合閱讀的對象:
獨立開發者:建置遲遲未啟動,需要分辨等待、略過與失敗。
CI 工程師與發布負責人:需要檢查觸發設定,或驗證另一條可交付的建置流程。
Xcode Cloud 排隊時,如何先判斷建置在哪個階段?
PENDING 代表建置尚未進入執行階段;RUNNING 表示正在執行;COMPLETE 則表示執行進度已完成。這些進度值不能單獨說明完成結果。App Store Connect API 另有建置完成狀態欄位,因此要把「目前進度」和「最終結果」分開判讀,並以 Apple 文件中各欄位定義為準。
在 Xcode 或 App Store Connect 查看同一筆建置記錄時,先記下提交、工作流程及目前顯示的狀態。若畫面顯示待處理,並不表示編譯已經失敗;如果已經執行或出現錯誤,就應轉查建置動作與記錄,而不是繼續把問題歸因於佇列。建置執行記錄的 API 欄位與完成狀態欄位可協助確認兩者的區別。
待處理的建置怎麼查?先確認它是否確實進入待處理,而非只有預期中的工作流程沒有建立建置記錄。對照最近一次成功執行與目前提交:若找不到新建置,優先檢查觸發條件;若已有該提交的記錄,才沿著狀態變化繼續追查。
提醒:單一畫面上的文字不一定足以確認根因。請以該筆建置記錄的進度欄位、完成狀態及動作記錄交叉判讀。
找不到新建置時,先核對觸發條件
工作流程只有在設定的條件符合時才會啟動。檢查來源分支或 pull request 是否符合設定,也要確認工作流程已啟用,以及目前專案或方案是否包含在工作流程配置內。Apple 的工作流程參考文件說明工作流程的設定項目;首次設定 Xcode Cloud 工作流程的指引則可用來核對建置啟動與專案配置。
工作流程設定還是服務異常?先比對提交是否滿足觸發規則,以及同一工作流程最近一次成功執行的分支、方案和設定。若當前提交沒有產生建置記錄,問題可能在觸發條件或工作流程配置;若建置已建立並處於待處理,才需要再核對服務狀態與狀態變化。這項區分能避免把「未觸發」誤認為「排隊」。
排查時可依序核對:
- 分支與 pull request 是否符合工作流程指定條件。
- 工作流程是否啟用,設定是否套用到目前專案及方案。
- 最近一次成功建置與目前提交之間,是否修改了觸發或工作流程配置。
- App Store Connect 是否存在目前提交對應的建置記錄。
這些檢查確認的是建置是否有機會啟動,不代表已證明 Apple 服務正常。若建置記錄存在,應回到狀態欄位繼續追蹤。
被取消或略過時,檢查自動取消設定
連續提交時,較新的建置可能影響較早建置的處理方式。請查看工作流程中的 Auto-cancel Builds 設定,並比對相關建置的提交順序、狀態和記錄。Apple 的工作流程參考文件列出這項設定及其行為;具體建置是否被取消或略過,仍須依該筆記錄中的狀態判斷。
如何確認沒有被自動取消或略過?檢查同一工作流程中是否出現更新的建置,再核對較早建置的完成狀態;如果狀態已是取消或略過,就不要把它當成編譯失敗。若沒有新建置取代它,而且狀態仍顯示待處理,則繼續追查服務狀態或等待官方支援判斷。
| 建置記錄與設定 | 優先採取的判斷 | 下一步 |
|---|---|---|
| 找不到目前提交的建置記錄 | 先查觸發條件與工作流程設定 | 對照分支、pull request、專案及方案配置 |
| 建置顯示待處理 | 建置已建立,但尚未開始執行 | 記錄狀態變化,再查看 Apple Developer System Status |
| 建置顯示取消或略過 | 核對 Auto-cancel Builds 與後續提交 | 確認是否由更新的建置取代,不要直接視為編譯失敗 |
| 建置已執行或顯示錯誤 | 問題已進入建置或動作階段 | 開啟失敗動作的記錄,檢查工具鏈、依賴及配置 |
執行或報錯後,轉查動作記錄與專案配置
一旦狀態進入執行或錯誤,就不要把後續故障仍然稱為排隊。打開失敗的建置記錄,從失敗動作開始查看錯誤訊息,再檢查工具鏈環境、套件依賴與工作流程配置。Apple 提供的常見配置與建置問題排解指引適合用來逐項檢查設定。
依賴解析也是常見的檢查方向。確認 CI 執行時可取得專案所需的套件與其他依賴,並查看讓 Xcode Cloud 取得依賴的官方說明。若失敗涉及 Swift 套件或使用套件的應用程式,也可對照 Apple 的連續整合工作流程建置說明。
為了區分專案問題與服務問題,可依這個順序處理:
- 記錄失敗建置對應的提交、工作流程與失敗動作。
- 從動作記錄找出最早出現的實際錯誤,不只看最後的總結訊息。
- 檢查工具鏈、依賴取得方式及工作流程設定是否與成功建置一致。
- 在本地使用同一提交重現,並依 Apple 指引核對本地與雲端配置差異。
若同一提交在本地也失敗,應先處理專案或建置配置;若本地可重現成功,則保留兩邊的記錄,再按 Apple 的支援途徑提交問題。單次本地成功不等於已證明服務端故障,但能為後續定位提供有用的對照。
工作流程看似正常時,核對服務狀態與等待策略
到Apple Developer System Status查看與開發者服務相關的狀態。若頁面列出服務異常,記下檢查時的狀態,並保留受影響的工作流程、提交、建置狀態及變化記錄。若頁面沒有列出異常,也不能據此證明帳戶或服務端絕無問題;仍應保存證據,並在影響交付時循官方支援路徑升級。
排查紀錄至少要能回答:是哪個提交受影響、工作流程是否建立建置、建置最後顯示什麼狀態,以及服務狀態頁當時有沒有相關公告。把這些資訊放在同一份事件記錄中,能讓支援人員區分觸發問題、建置問題與可能的服務端問題,也避免只憑「等很久」推定故障原因。
用里程碑驗證備用建置路徑
若 Xcode Cloud 的觸發條件與專案配置看似正常,服務狀態也沒有足以解釋延遲的資訊,決策重點就從「是否繼續等待」轉為「交付是否需要另一條已驗收的路徑」。備用流程應用同一提交驗證,並確認工具鏈、依賴、建置及測試動作符合該專案的交付要求;不能因為另一台 Mac 能啟動建置,就推定它已取代原有發布流程。
| 選項 | 適用情況 | 主要限制 |
|---|---|---|
| 繼續使用 Xcode Cloud | 工作流程正常,且目前建置狀態仍可追蹤 | 無法由本地設定直接控制服務端處理狀況 |
| 在自管 Mac 驗證備用流程 | 交付時程需要另一條可獨立驗證的建置路徑 | 需要自行維護環境,且不能消除 Xcode Cloud 服務側延遲 |
| 先修正工作流程或專案設定 | 沒有建置記錄,或錯誤指向觸發、依賴及配置 | 修正後仍須重新驗證完整工作流程 |
可按里程碑驗收:先讓同一提交在備用環境中可重現,再確認必要建置與測試動作可完成,最後檢查產物交付方式是否符合團隊要求。若需要在遠端 Mac 上檢查建置與測試工作流程,可先查看 armrdp 的使用文件,再按實際專案驗收結果決定是否將這條路徑納入發布安排。
若排查過程已排除工作流程觸發問題,但等待仍影響交付,持續依賴單一服務會讓團隊缺少可自行驗證的建置環境;改用 Linux 主機又無法直接取代 macOS 專屬工具鏈,而自購 Mac 則需要承擔硬體持有與維護責任。對只在發布或故障排查期間需要備用環境的團隊,租用 armrdp 的遠端 Mac 可作為另一條驗證路徑;它不是修復 Xcode Cloud 排隊的保證,也不適合必須掌控實體介面或長期固定滿載的情況。您可先查看遠端 Mac 環境選項,再以真實專案確認工具鏈、建置動作與交付方式是否合用。
