本週先核對工作流程標籤、Runner 在線狀態、儲存庫權限與任務資源需求;只有確認是可控的供給不足,或你需要固定維護環境,才評估自託管 macOS Runner。是否上線,必須以真實工作流程通過接單、建置、清理和重啟恢復驗收為準。
立即處理:保留工作流程識別資料與日誌,先判斷工作尚未分派、Runner 沒有接單,還是建置已開始後失敗。
本週動作:用最小化工作流程驗證路由,再完成自託管環境的清理、告警與恢復檢查。
適合維護 GitHub Actions 流水線、需要排查工作為何未被 Runner 接走的開發者。
需要固定 macOS 建置環境的團隊,可依清單驗證自託管方案。
負責 Runner 生命週期的運維人員,可用這些檢查項目建立監控和恢復流程。
GitHub Actions macOS Runner 排隊:先分清故障階段
「排隊」不是單一故障原因。工作流程顯示等待時,先記下工作流程識別資料、工作名稱和相關日誌,再觀察 Runner 狀態。這些線索能避免把標籤、權限、離線或建置問題混成「機器不夠」。
| 表現 | 代表的階段 | 優先核對 |
|---|---|---|
| 工作仍在等待,沒有 Runner 接手 | 尚未成功分派 | runs-on 條件、Runner 標籤、群組存取權 |
| Runner 沒有接下已符合條件的工作 | Runner 無法接單或不可用 | 在線狀態、服務程序、網路連線與重啟狀態 |
| 工作已開始,之後顯示失敗 | 已接單,建置或工作步驟出錯 | 工具鏈、依賴、簽名材料、秘密資訊及輸出日誌 |
自託管 Runner 會依標籤路由工作;工作流程的 runs-on 條件必須符合可用 Runner,且群組存取設定也要允許該儲存庫使用。請對照 GitHub 自託管 Runner 路由與支援要求、標籤套用與路由說明及工作流程選擇 Runner 的規則。
標籤或權限不符:主機已啟動仍可能無人接單
先比對工作流程中的 runs-on 和 Runner 實際標籤。名稱、拼字或條件有一處不相符,主機即使在線,也不等於工作能路由到它。接著確認 Runner 所屬群組是否授權目前的儲存庫;組織層級的 Runner 不一定對所有儲存庫開放。
建立一個只執行簡單命令的最小化工作流程,使用正式工作流程預定的標籤和群組條件。若測試工作也不能分派,先修正路由或權限,暫時不要增加機器。GitHub 的自託管 Runner 群組存取設定與安全提醒說明了存取範圍需要納入設定和安全檢查。
若任務依賴特定 Xcode 或 macOS 組合,還要核對工具鏈與作業系統是否符合專案需求;Apple 的 Xcode 系統需求可用來核對支援條件。依賴不相容通常要從建置錯誤追查,不應先當成排隊問題處理。
Runner 離線或重啟後未恢復:檢查服務與連線
Runner 不在線時,工作即使符合標籤,也無法由該環境接手。檢查 Runner 程序是否仍在執行、主機能否連線至所需服務,以及服務中斷後是否能按預期重新啟動。以 GitHub 官方列出的作業系統與平台要求為準,不要從單次成功啟動推論所有系統版本都受支援。
設計告警時,至少涵蓋 Runner 離線、接單異常和重啟後未恢復。告警需要由指定人員接收,並留下事件及處理結果;發現短暫斷線時,也要實際確認 Runner 回到可接單狀態,而不只是主機重新開機。可參照自託管 Runner 監控與故障排查文件,把檢查程序納入日常維護。
提醒:Runner 在線不代表工作已被分派;工作開始後失敗,也不能單靠增加 Runner 解決。先保存兩類日誌,再依故障所在階段採取行動。
工作已執行但建置失敗:分開查工具鏈與簽名
一旦工作已開始,先從工作步驟輸出確認失敗點。核對 Xcode 版本、依賴是否可取得,以及簽名所需材料和秘密資訊是否正確配置。若遷移後才失敗,將新舊環境的工具鏈和工作流程條件逐項比對,避免把環境差異誤認成 Runner 調度故障。
需要更詳細診斷資料時,按需啟用 GitHub Actions 除錯日誌。日誌可能包含環境或命令輸出,檢查與分享之前,先確認沒有暴露憑證或其他秘密資訊。若任務被接走但建置報錯,應記錄為建置故障,再按工具鏈、依賴和簽名路徑處理。
任務結束後仍有殘留:驗證工作目錄與憑證生命週期
自託管環境會保留在你管理的主機上,不能假設每個任務結束後所有檔案都已消失。檢查工作目錄、暫存檔和簽名材料是否按設計清除;若不同工作流程共用工作目錄或快取,確認一個流程無法讀取另一個流程不應存取的敏感檔案。
秘密資訊應按工作需要提供,並確認任務結束後不再可用。對快取做驗收時,驗證可重用的依賴快取與不能外流的工作檔案之間有清晰界線。測試清理時,不只檢查成功路徑,也要檢查建置失敗或中斷後的殘留。
自託管 macOS Runner 上線:依條件選擇路徑
若你遇到的是規則或權限錯誤,先修設定;若 Runner 離線,先恢復服務與網路;若工作已接單後才建置失敗,先處理工具鏈和專案設定。只有確認工作路由正確,而現有供給或環境管理方式確實無法滿足需求,才進入自託管方案評估。
- 若標籤或群組權限不符,選擇先修工作流程與存取設定;否則不要用加機器代替設定排查。
- 若 Runner 無法在線接單,先修復程序、網路或重啟恢復;若工作已接手才失敗,轉查建置日誌。
- 若工作路由正確、Runner 穩定在線,但供給不足或你需要固定維護的 macOS 環境,再評估自託管。
- 若目前無法隔離工作目錄、保護簽名材料或安排故障告警,先補齊運維控制,不要把環境標記為已驗收。
驗收清單:用真實工作流程逐項確認
- [ ] 可接單:最小化工作流程使用預定標籤和群組,確實由目標 Runner 接手並完成。
- [ ] 可建置:使用實際專案,驗證工具鏈、依賴取得、簽名材料及秘密資訊配置。
- [ ] 失敗可告警:模擬或觀察受控失敗,確認告警送達負責人,且能找到相應日誌。
- [ ] 重啟可恢復:重新啟動主機或 Runner 服務後,確認狀態恢復並能再次接單。
- [ ] 任務結束可清理:檢查工作目錄、暫存檔和憑證處理,並確認快取沒有暴露其他工作流程的敏感資料。
以上各項都通過後,再把環境納入正式工作流程。若你的作業系統或 Xcode 組合有特殊要求,先以 Apple 與 GitHub 文件核對支援條件;若仍無法接單,回到工作流程日誌和 Runner 狀態逐項定位。GitHub 也提供監控與故障排查指引,可用來補足日常維護程序。
目前的 GitHub 託管環境可減少自行管理主機的工作,但你不能任意控制其作業系統與維護方式;共用建置主機則可能讓工作目錄隔離、簽名憑證管理和故障追查更難一致。這些限制不會自動證明自託管較合適:先完成標籤、權限和需求診斷,再評估能否落實清理與恢復。
如果你只需要臨時驗收遷移、測試固定 macOS 工作流程,或在調整長期架構前取得可管理的環境,可先查看 Hashvps 的方案資訊,核對目前可提供的環境與接入方式是否符合你的工作流程;也可先閱讀服務條款,確認服務範圍。若不符合 Runner 的權限、工具鏈或任務生命週期要求,先修正設定或選擇其他環境,不要把租用環境當成標籤錯誤的替代解法。
為自託管 macOS Runner 配置專屬建置節點
Hashvps 提供搭載 Apple Silicon M4 的雲端 Mac mini,可按工作流程選擇 16GB 或 24GB 統一記憶體規格。
使用原生 macOS 環境,透過 SSH 或 VNC 遠端管理,適合部署自託管 Runner、執行建置與簽署任務。