確認 Xcode 選取路徑
同時記錄圖形介面的 Xcode 版本與命令列工具路徑。存在多個版本時,建置腳本必須明確選擇,避免互動工作階段與 runner 使用不同的工具鏈。
$ xcodebuild -version
$ xcode-select -p
$ xcrun --find swift
從取得連線資訊到跑通 Xcode、簽署與持續整合,依照任務查找步驟。每個檢查項目都對應可觀察的結果,遇到問題時也能準備可重現的診斷記錄。
Apple Silicon 實體節點,每筆訂單獨享一台裝置,並非虛擬機。首次連線前,請先核對節點、系統版本與存取方式。
不必從頭閱讀。選擇目前的任務,直接進入對應的檢查清單。訂單、續租與裝置狀態屬於控制台任務,技術設定與錯誤定位則在本頁完成。
首次接入的目標不是立即遷移所有專案,而是確認憑證、網路、圖形工作階段與 SSH 都穩定。基礎連線尚未驗證前,不建議開始長時間建置。
核對訂單識別碼、節點、裝置名稱與存取方式。憑證僅保存在受控的密碼管理工具中,不透過群組聊天或公開文件轉發。
確認本地網路未封鎖所需連接埠,關閉會改寫路由的臨時代理,記錄目前的公網出口與測試時間。先使用穩定的有線網路驗證,再比較無線網路的表現。
先使用接近本地螢幕的解析度,確認文字清晰度、按鍵配置與雙向剪貼簿。高解析度會增加弱網路下的畫面更新負擔,應先確保互動穩定。
主動中斷一次工作階段後重新連線,檢查正在執行的指令是否仍在、圖形工作階段是否恢復至原桌面。長時間工作建議放入可持續的指令工作階段或 CI/CD 工作中。
僅向必要成員分發存取權限,團隊成員變更後立即更新憑證。不要在腳本、儲存庫、建置日誌或截圖中保存私鑰、完整密碼與遠端控制驗證碼。
先確認 SSH 工作階段,再執行 Xcode 建置,最後驗證自動化打包工具。範例僅展示判斷路徑,專案名稱、scheme、workspace 與匯出參數應替換為團隊自己的設定。
$ ssh developer@assigned-mac
connection established
$ sw_vers -productVersion
current macOS version returned
$ xcodebuild -workspace App.xcworkspace \
-scheme App -configuration Release build
Resolve Package Graph
CompileSwiftSources normal arm64
** BUILD SUCCEEDED **
$ bundle exec fastlane ios verify_build
Checking signing assets
Archive validation passed
fastlane finished successfully
多數簽署故障並非由單一開關造成。先固定工具版本,再檢查憑證與描述檔是否相符,最後確認自動化程序能存取所需的 Keychain 項目。
同時記錄圖形介面的 Xcode 版本與命令列工具路徑。存在多個版本時,建置腳本必須明確選擇,避免互動工作階段與 runner 使用不同的工具鏈。
$ xcodebuild -version
$ xcode-select -p
$ xcrun --find swift
憑證、私鑰與描述檔必須屬於同一簽署流程。匯入後先檢查有效期限、團隊資訊與目標識別碼,不要直接以正式打包工作作為第一次驗證。
圖形工作階段中可用,不代表自動化程序也可用。應以 runner 對應的使用者,在非互動環境下檢查解鎖方式、搜尋清單與程式碼簽署存取權限。
保留失敗指令、目標名稱、configuration、匯出方式與第一行錯誤。不要只提交最後一行的通用失敗提示,因為其中通常缺少真正原因。
| 檢查對象 | 需要記錄 | 通過標準 | 失敗時的下一步 |
|---|---|---|---|
| macOS | 目前版本、可用空間 | 目標 Xcode 明確支援 | 暫停變更並核對相容性矩陣 |
| Xcode | 版本、選取路徑、SDK | 命令列與圖形介面一致 | 修正工具路徑後重新執行最小建置 |
| 簽署材料 | 憑證狀態、描述檔、團隊 | 目標識別碼與匯出方式相符 | 重新匯入並檢查 Keychain 權限 |
| 專案相依套件 | 鎖定檔、執行環境、外掛程式版本 | 乾淨目錄可重複安裝 | 清理局部快取並保留失敗日誌 |
runner 不應直接重複使用日常開發目錄。為儲存庫、相依套件快取、建置產物與暫存檔案劃分界線,才能避免一次失敗的工作污染下一次建置。
每個儲存庫各自獨立,工作結束後移除暫存檔案,不重複使用來源不明的簽出目錄。
依鎖定檔或工具版本產生快取鍵,版本變更時主動失效,不無條件完整重複使用。
將產物與原始碼分開保存,成功上傳後依團隊保留策略清理本地副本。
使用平台密鑰機制注入並限制日誌輸出,不寫入專案檔案、快取或封存檔。
VMOwn 節點全年 365 天正常運作,不設定期停機。系統升級屬於使用者主動變更,應選擇不影響發布與建置的時段,並在操作前完成工具鏈相容性驗證。
「連線失敗」或「建置錯誤」不足以開始定位。請提供問題發生的情境、準確時間、第一個錯誤與最小重現步驟,同時移除日誌中的敏感內容。
提供新加坡、日本(東京)、韓國(首爾)、香港或美國西部中的實際節點,以及控制台內的訂單識別碼。
記錄 macOS、Xcode、命令列工具與直接相關相依套件的版本,不必提交整台裝置的軟體清單。
寫明問題發生時間、持續時間與時區。連線問題還應註明本地網路所在地與網路類型。
保留錯誤前後的必要情境,優先提交第一個失敗資訊,不要只截取最後一行的結束狀態。
從已知正常狀態開始,依序寫出指令、介面操作、輸入與實際結果。
說明是否重新連線、重新啟動工作、切換網路、清理局部快取或回復設定,避免重複操作破壞現場。