確認 Xcode 版本
執行 xcodebuild -version,記錄主要版本與 Build version。若流水線依賴特定版本,應在任務開始時輸出版本,而不是只在初次設定時檢查。
xcodebuild -version
xcrun --find simctl
swift --version
選擇連線、Xcode、CI/CD、儲存空間、網路或續租,頁面會保留相關入口。也可以輸入指令、現象或工具名稱進行搜尋。
目前顯示全部 6 類說明入口。
嘗試縮短關鍵字,或清除分類後搜尋指令名稱。涉及現有訂單的問題可直接提交控制台工單。
連線資料以控制台實例詳細資料頁顯示為準。不要根據舊工單或歷史指令猜測主機位址,節點重新交付後應重新複製目前資訊。
進入控制台的實例詳細資料,複製主機位址、SSH 使用者名稱、連接埠與金鑰資訊。先確認所選訂單與節點一致,再將指令貼到本機終端機。
將金鑰檔案放在本機使用者可控的目錄,不要提交至 Git 儲存庫、建置產物或團隊聊天記錄。檔名可自訂,但後續指令路徑必須相符。
在 macOS 或 Linux 本機終端機執行 chmod 600 ~/.ssh/oncemac_key。若 SSH 提示私密金鑰權限過於寬鬆,應先修正權限,不要透過關閉安全檢查來繞過。
執行控制台提供的 SSH 指令。首次連線時核對主機指紋來源;進入節點後執行 hostname、sw_vers 與 whoami,確認主機、系統與目前使用者。
每次排查只變更一個變數。先確認 SSH 工作階段穩定,再讀取 Xcode 版本,最後執行包含結果套件與日誌的建置指令。如此可區分連線問題、工具鏈問題與專案本身的問題。
$ ssh -i ~/.ssh/oncemac_key user@host
Last login: current session
connected: once-node
$ xcodebuild -version
Xcode 16.x
Build version 16x
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
$ set -o pipefail
$ xcodebuild \
-workspace App.xcworkspace \
-scheme App \
-destination 'generic/platform=iOS' \
-resultBundlePath ./BuildResults.xcresult \
build | tee build.log
** BUILD SUCCEEDED **
$ bundle exec fastlane ios build
[fastlane] resolving dependencies
[fastlane] archive completed
[fastlane] lane finished successfully
「本機可以建置、節點卻不行」通常不足以定位原因。應對照相同提交、依賴鎖定檔、scheme、destination 與環境變數,再比較兩端輸出。
執行 xcodebuild -version,記錄主要版本與 Build version。若流水線依賴特定版本,應在任務開始時輸出版本,而不是只在初次設定時檢查。
xcodebuild -version
xcrun --find simctl
swift --version
執行 xcode-select -p 檢查 Command Line Tools 目前路徑。若使用多個 Xcode 版本,應在執行器環境中明確設定 DEVELOPER_DIR,避免互動式工作階段與自動化任務讀取不同路徑。
xcode-select -p
echo "$DEVELOPER_DIR"
xcrun --sdk iphoneos --show-sdk-path
先確認鑰匙圈可存取、憑證名稱與 provisioning profile 條件相符,再檢查專案的 Team、Bundle Identifier 與簽署方式。工單只需提供已去識別化的錯誤片段,不要附上憑證、私密金鑰或密碼。
security list-keychains
security find-identity -v -p codesigning
xcodebuild -showBuildSettings
透過 set -o pipefail 保留真實結束狀態,同時使用 tee 寫入日誌。複雜失敗建議產生 .xcresult,並在分享前移除使用者名稱、路徑、權杖與業務資料。
set -o pipefail
xcodebuild build | tee build.log
echo "${PIPESTATUS[0]}"
OnceMac 提供獨享實體節點與完整 macOS 命令列環境。具體平台功能、外掛相容性與任務定義應由團隊依自己的儲存庫與版本條件驗證。
runs-on 條件。whoami、pwd、Xcode 版本與可用磁碟空間。優先從 Git、鎖定檔與 Brewfile 重建工具鏈,只遷移確實需要的工作目錄與快取。整個複製舊使用者環境會將過期設定、絕對路徑與敏感憑證一併帶入新節點。
先以預演模式檢查即將複製與刪除的內容,再執行正式同步。目標路徑中的刪除行為必須由操作者確認。
rsync -avhn \
--exclude '.git' \
--exclude 'DerivedData' \
./Project/ user@host:~/Project/
在來源節點記錄分支、提交雜湊與未提交變更。新節點完成複製後核對雜湊,再還原依賴,不要以壓縮檔取代版本記錄。
git status --short
git rev-parse HEAD
git clone repository-url
git checkout commit-hash
匯出前檢查清單,移除不再需要的軟體。還原後逐項驗證指令版本,不能只以安裝指令成功結束作為環境可用的依據。
brew bundle dump --file Brewfile
brew bundle check --file Brewfile
brew bundle install --file Brewfile
SSH 私密金鑰、儲存庫權杖、簽署資料、環境變數檔案與服務金鑰不應隨專案目錄批次複製。確認新節點具備最小權限後,透過團隊認可的安全流程重新設定。
以下五類問題都依「確認現象、執行最小指令、記錄結果、停止無效變更」的順序處理。展開對應項目即可查看檢查清單。
chmod 600 檢查本機私密金鑰權限,並確認指令中的金鑰路徑存在。ssh -vvv 取得連線階段資訊,但提交工單前請移除完整位址、使用者名稱與金鑰路徑中的個人資訊。set -o pipefail 保留真實結束代碼,並匯出 .xcresult 或完整日誌。df -h 查看磁碟區剩餘空間,再使用 du -sh 定位工作區、DerivedData、封存檔與依賴快取。uptime,核對啟動時間與問題發生時間是否一致。現有訂單、節點狀態與續租問題優先透過控制台工單提交;尚未下單的設定與使用範圍問題可傳送電子郵件。對外聯絡信箱僅為 support@oncemac.com。
提供訂單編號、配置名稱與節點區域,不要提供付款憑據或完整帳單資料。
註明時區、首次發生時間、最後一次重現時間,以及問題是否持續。
列出執行指令、預期結果、實際結果與結束代碼,避免只寫「無法使用」。
保留錯誤脈絡,移除金鑰、權杖、密碼、完整 IP、簽署資料與業務資料。
說明已驗證的網路、版本、路徑、磁碟與重試結果,避免重複執行無效步驟。
適合處理節點連線、建置異常、帳單、續租與訂單狀態問題。工單會關聯登入帳戶,方便核對實例脈絡。
進入控制台請說明用途、目標節點、Xcode 版本、並行建置數、儲存空間需求與預計啟用時間。
support@oncemac.comOnceMac 提供 3 種在售配置與 6 個節點,全年 365 天正常運作。所有訂單均以美元結算,可在控制台統一管理訂單、節點與工單。