先定位,再排查

讓打包作業繼續執行

查詢連線、工具鏈、簽章與計費問題。先檢查下方指令和注意事項;若仍未解決,再提供節點資訊與去識別化日誌,交由支援團隊協助。

已租用節點的問題,請使用訂單所屬帳戶提交,方便核對執行個體與帳單。

從問題發生的環節開始

從問題發生的位置選擇入口。不必先修改整條流水線,先確認最小重現作業能否通過。

帳戶與計費

確認訂單所屬電子郵件、租期與帳單狀態。續租前確認執行個體與週期;付款後以控制台顯示的結果為準。

連線與遠端桌面

先判斷是 SSH 無法連線、驗證失敗,還是圖形介面連線失敗。記下具體錯誤,請勿在工單中貼上登入密碼。

Xcode 與簽章

先確認目前的開發者目錄,再檢查憑證私鑰、描述檔與 Target。工具鏈和簽章問題請分開驗證。

CI/CD 整合

確認 runner 的執行使用者、標籤與工作目錄。手動作業通過後,再整合自動觸發與憑證注入。

資料與重裝

區分原始碼、快取與金鑰。重裝前先將必要資料備份到節點以外,並確認備份確實可以還原。

用一行指令驗證

打包機常見問題

以下路徑、Scheme 與專案名稱皆為指令範例,執行前請換成自己的專案資訊。涉及權限或憑證的操作,請先在單一測試作業中驗證。

如何使用 xcode-select 切換不同版本的 Xcode?

先查看目前的開發者目錄和版本,並確認已安裝目標 Xcode。以下範例會將系統預設目錄切換為 /Applications/Xcode.app;使用其他版本時,請替換為實際的應用程式路徑。

xcode-select -p
xcodebuild -version
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
xcodebuild -version
xcrun --find swift

系統層級的切換會影響之後啟動的其他作業。若不同流水線需要使用不同版本,建議在作業環境中設定 DEVELOPER_DIR,避免不同作業反覆變更全域目錄。

DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
xcodebuild -list -workspace MyApp.xcworkspace

切換後先列出 Scheme,再執行一次 Archive。若缺少平台元件或尚未完成初次執行設定,請先在 macOS 圖形介面中初始化對應工具鏈,再重新執行自動化作業。

如何匯入發行憑證與描述檔?

準備包含私鑰的憑證匯出檔、該檔案的密碼,以及符合 App 識別碼和發行方式的描述檔。只有憑證而沒有相對應的私鑰,通常無法完成程式碼簽章。

  1. 使用執行建置作業的 macOS 帳戶開啟「鑰匙圈存取」,將憑證匯入該帳戶的鑰匙圈。
  2. 展開憑證,確認下方有相對應的私鑰。使用下方指令檢查有效的程式碼簽署身分。
  3. 依照所用 Xcode 版本的要求安裝描述檔;在專案簽章設定中確認 Team、Bundle Identifier 與發行方式。
  4. 逐一檢查 App、Widget 和 Extension 的簽章設定,再執行 Archive 並驗證匯出結果。
security find-identity -v -p codesigning

CI 執行使用者的鑰匙圈環境可能與遠端桌面使用者不同。無人值守建置需要在作業中正確解鎖鑰匙圈,並設定必要的存取權限。密碼請從 CI 的受保護變數讀取,不要寫入程式碼儲存庫、指令輸出或工單。

若手動打包成功但 CI 失敗,請優先比對執行使用者和鑰匙圈狀態。回報簽章錯誤時,只提供憑證類型、有效期限與已去識別化的錯誤行,請勿上傳私鑰或憑證密碼。

重裝系統後,節點上的資料會保留嗎?

請勿將重裝視為保留檔案的操作。重裝可能會清除系統與工作目錄;提交申請前,請先透過控制台工單確認處理範圍,並完成節點外備份。租期結束後,節點會執行磁碟抹除,請勿將到期節點當作資料還原來源。

備份至少應包含尚未推送的原始碼、建置設定、必要工件、描述檔及受保護的金鑰資料。DerivedData、依賴套件下載目錄等快取可以重新產生,但會延長還原後首次建置的時間。

完成備份不代表一定能順利還原。請將備份解壓縮到另一個獨立目錄,核對檔案數量與重要設定,並確認可以取回最近一次的產物,再停止原節點上的作業。重裝後請重新安裝工具鏈、還原簽章環境並註冊 runner。

租期到期前要如何續租?

登入訂單所屬帳戶,在控制台確認執行個體、到期時間與可選續租週期,再依頁面顯示的帳單完成付款。續租是否成功及新租期,以控制台即時顯示的結果為準,請勿依付款截圖或關閉瀏覽器前的畫面判斷。

僅支援 USDT-TRC20 與 Visa / Mastercard / Amex(透過 Stripe),一律以美元結算;實際可用的付款閘道以後端介面回傳為準。使用鏈上付款前,請確認網路、金額與收款資訊;刷卡完成後,請返回控制台查看帳單。

若帳單與執行個體狀態不一致,請提供訂單編號、帳單編號與交易參考資訊。請勿重複付款來嘗試修正狀態,也不要在工單中提供完整卡號。到期前請先備份工件與必要檔案,避免將續租流程當成資料備份方式。

SSH 或遠端桌面無法連線時,該先檢查什麼?

先在控制台確認節點位址、連接埠、使用者名稱與執行個體狀態。判斷是連線逾時還是驗證失敗:前者優先檢查網路連通性,後者優先確認使用者名稱、密碼或金鑰。SSH 與 VNC 使用不同的連線資訊,請勿混用連接埠。

ssh -v -p PORT USER@HOST

請將 PORT、USER、HOST 替換成實際資訊。若日誌顯示主機指紋變更,請先透過可信的控制台資訊或工單確認原因,勿直接停用主機身分驗證。

遠端桌面適合檢查 macOS 圖形介面、鑰匙圈與 Xcode 設定;SSH 適合命令列操作和 CI。提交日誌前,請移除使用者名稱、位址和本機路徑中的敏感資訊,只保留錯誤類型與發生順序。

註冊 self-hosted runner 後,為什麼作業一直在等待?

請確認以下四項:runner 是否在線上、作業標籤是否相符、專案是否允許使用該 runner,以及程序是否以正確的使用者執行。註冊成功只代表已建立關聯,不代表所有作業都會自動派送到該節點。

先提交僅輸出工具鏈資訊的測試作業,確認執行使用者、目錄和 Xcode 版本,再加入依賴安裝與簽章步驟。

whoami
pwd
xcode-select -p
xcodebuild -version
security find-identity -v -p codesigning

將 macOS、晶片架構與用途寫入標籤,並在專案設定中明確指定。首次整合時,請先限制同時執行一個作業,確認快取、鑰匙圈和產物目錄不會互相覆寫,再逐步增加並行數。註冊權杖屬於憑證,請勿放入工單或建置日誌。

專案可以編譯,但 Archive 失敗,該如何縮小問題範圍?

先確認使用正確的 workspace、共用 Scheme 和 Release 設定。Archive 與模擬器建置是不同流程;裝置目標的簽章、架構和匯出設定需要另外確認。

xcodebuild -list -workspace MyApp.xcworkspace
xcodebuild archive \
  -workspace MyApp.xcworkspace \
  -scheme MyApp \
  -configuration Release \
  -destination 'generic/platform=iOS' \
  -archivePath build/MyApp.xcarchive

保留第一個實際錯誤及其前後文,不要只截取最後的「失敗」結論。分別檢查依賴安裝、指令碼階段、簽章階段和磁碟寫入。Archive 成功後仍須驗證匯出的工件,不能將封存完成視為已產生可發佈的套件。

磁碟空間不足,可以直接刪除所有快取嗎?

先檢查磁碟使用量和作業狀態,再區分可重新產生的快取與需要保留的產物。請勿在作業執行期間刪除其依賴的目錄,也不要將原始碼、簽章資料或尚未上傳的 Archive 當成快取處理。

df -h
du -sh ~/Library/Developer/Xcode/DerivedData
du -sh ~/Library/Developer/Xcode/Archives

為快取與產物分別訂定保留規則。清理後,首次編譯和解析依賴套件可能會變慢,請將這次建置視為冷啟動驗證。若長期空間不足,先統計專案與工件的成長量,再選擇更合適的機型或 SSD 擴充項目。

統一工單中的術語

以下八個常見詞彙分別對應資源、連線、建置與簽章。描述問題時請指出具體項目,減少來回確認。

實體節點
實際執行 macOS 的 Mac mini。XCRent 提供獨享實體機,並非虛擬機;節點資訊用於識別執行個體,不等同於專案中的 CI 作業編號。
獨享
租期內由單一租戶使用整台實體節點。同一租戶的多個作業仍會競用 CPU、記憶體與磁碟,因此需要自行安排並行作業與目錄隔離。
VNC
一種遠端桌面連線方式,用來操作 macOS 圖形介面。適合確認 Xcode 設定、鑰匙圈和系統狀態;實際位址與憑證請從登入後的控制台取得。
SSH
一種加密的命令列連線方式,適合執行指令、傳輸檔案與部署自動化流程。使用金鑰驗證時,請妥善保護私鑰並確認伺服器身分;SSH 並非遠端桌面通訊協定。
self-hosted runner
部署在自有節點上的 CI 執行程序。它會接收專案作業並以指定使用者身分執行;線上狀態、標籤、權限與工作目錄都會影響作業能否執行。
Archive
Xcode 的封存建置產物,包含後續匯出所需的 App 內容與相關資訊。Archive 成功不代表匯出成功,還需要確認簽章與發行設定。
描述檔(Provisioning Profile)
用來限制 App 識別碼、功能、憑證與發行範圍的簽章檔案。它必須符合 Target 設定,不能取代發行憑證及其相對應的私鑰。
統一記憶體
Apple Silicon 中由 CPU 與 GPU 共用的記憶體資源。編譯、模擬器和模型作業同時執行時,需一併評估記憶體負載,不能將全部容量都分配給單一作業。
可用率與補償

查看月度數據,別把建置失敗當成服務中斷

節點全年 365 天正常運作。服務可用性與專案編譯結果應分開確認:憑證過期、專案設定錯誤或使用者操作造成的失敗,不代表節點無法使用。

月可用率承諾

99.9%

若月可用率低於承諾值,將依未達標的時數折算租期補償。申請時請提供執行個體、受影響時段與連線記錄,支援團隊會核對伺服器端記錄及適用範圍。

近 90 天記錄說明

本頁尚未串接節點監控記錄,因此不會顯示每日運作狀態,也不會將承諾值標示為實測結果。實際事件記錄請透過控制台工單確認。

檢視期間
近 90 天
本頁資料狀態
未串接監控記錄
補償計算週期
按月核對

請保留哪些證據

記錄異常開始與恢復時間,並註明時區;保留連線錯誤、重試結果和受影響的執行個體。不可抗力及使用者操作等排除項目,依服務條款確認。請勿只提交流水線失敗的截圖,也不要以本地網路中斷推算節點停機時間。

提交可直接開始排查的工單

已租用的使用者請透過控制台提交;售前、商務或安全通報可寄至 support@xcoderent.com。所有支援需求都透過這兩個管道受理。

  1. 01

    標明執行個體

    提供訂單編號、節點城市與機型。節點據點包括新加坡、東京、首爾、香港、美國東部與美國西部;機型請寫 XR Build 16、XR Build 24 或 XR Build Pro 64,避免只寫「那台打包機」。

  2. 02

    描述問題現象

    說明在哪個步驟發生錯誤、開始時間、是否持續,以及近期是否切換 Xcode、修改簽章或調整 runner。請註明時區,避免不同節點的記錄無法對照。

  3. 03

    提供最小重現案例

    提供已去識別化的指令、第一個實際錯誤和已嘗試的檢查。請勿傳送私鑰、登入密碼、註冊權杖或完整付款卡資訊;日誌中的敏感路徑也應先移除。

  4. 04

    說明影響範圍

    區分單一專案失敗、所有作業失敗和節點連線失敗。若仍有作業可以執行,請說明哪些成功、哪些失敗,讓支援團隊先判斷問題出在工具鏈、專案或執行個體層級。

在哪裡查看支援進度?

請在控制台查看工單進度、補充資料要求與處理回覆。本頁不承諾尚未確認的固定分鐘級回覆時間;若有交付期限或預計復原時間需求,請在工單中註明業務截止時間,由支援團隊依實際情況確認。重複提交相同問題不會增加排查資訊,請優先在原工單補充記錄。

還找不到答案嗎?

告訴我們你的建置佇列、使用週期或具體錯誤訊息。聯絡頁會說明如何整理問題;已有訂單的相關問題,請直接在控制台保留完整排查記錄。