提交時留下必要資訊
記錄分支、commit、scheme、Xcode 版本與建置參數。接手者可從同一筆提交繼續,不必翻聊天紀錄猜「剛才跑的是哪個版本」。
交接資訊:提交雜湊 + 任務編號。
把 Xcode 建置機從辦公室搬到機房。每次 push 都會觸發任務,不再依賴同事留下電腦並接上電源。
在主機上註冊自架 macOS runner,依照儲存庫的設定觸發分支、測試目標與產出路徑。首次執行時,先確認命令列建置成功,再啟用自動觸發,避免把環境問題和 CI 設定問題混在一起排查。
單一 App 的順序建置可從 Push M4 S 開始:M4 / 16GB / 256GB SSD。保留依賴項與 DerivedData 快取,讓後續任務沿用相同目錄;避免多個任務同時寫入相同的建置輸出。
全年持續運作可避免依賴辦公室供電與設備代管,但不代表失敗的任務會自動恢復。runner 自動啟動、失敗重試、磁碟清理和日誌通知,仍需在團隊流水線中設定。
以下以專案目錄中的 App.xcworkspace 和 App scheme 為例,執行前請換成實際名稱。
xcodebuild -version
xcodebuild \
-workspace App.xcworkspace \
-scheme App \
-configuration Release \
-destination 'generic/platform=iOS' \
-derivedDataPath build/DerivedData \
-archivePath build/App.xcarchive \
archive
請事先準備簽名設定。此命令會產生 archive,不代表已完成匯出或上傳。
亞太白天提交,美國東部節點可接手北美白天的打包與發布。依主要操作者選擇節點,建置任務則透過佇列交接。
記錄分支、commit、scheme、Xcode 版本與建置參數。接手者可從同一筆提交繼續,不必翻聊天紀錄猜「剛才跑的是哪個版本」。
交接資訊:提交雜湊 + 任務編號。
獨享不等於可以無限並行。為同一台 Mac 設定佇列或互斥鎖,簽名與匯出階段依序執行;不同專案則使用各自的工作目錄與快取鍵。
交接資訊:佇列狀態 + 日誌路徑。
北美同事先確認測試結果、archive 和匯出日誌,再進行發布審批。若任務失敗,先保留現場與錯誤日誌,不要直接清除快取後重跑。
交接資訊:產出位置 + 審批結果。
可選節點包括新加坡、東京、首爾、香港與美國東部。VNC 操作優先考量操作者所在位置;自動建置也要考量儲存庫與依賴來源的網路路徑。時區可作為排班依據,但不保證連線延遲;若經常跨洲操作,可依兩地團隊分別配置主機,並統一 runner 標籤。
用於上架 App Store 的 archive、簽名與上傳,都在固定的建置環境中完成。減少環境遷移,也不必把簽名資產複製到每位同事的電腦。
為發布分支指定 Xcode 路徑,並記錄 SDK 與依賴鎖定檔。不要依賴互動桌面上一次選取的版本;在建置日誌中記錄實際使用的工具鏈。
憑證與描述檔集中保存在發布主機,並以最小權限原則設定鑰匙圈。密碼透過 CI 的受保護變數傳入,不要寫入儲存庫、命令輸出或公開日誌。
先保留 xcarchive,再使用經團隊審核的 ExportOptions 設定匯出。上傳步驟另行設定授權與審批,方便區分編譯、簽名和上傳失敗。
將版本號、提交雜湊、建置日誌與產出相互關聯。簽名資產只在必要位置使用,並在團隊控管的安全位置保留加密備份,避免單點遺失。
Flutter 和 React Native 的 iOS 建置階段仍需要 macOS 工具鏈。將原生依賴、Pods 與 Xcode 快取留在主機上,減少每次臨時設定環境的重複工作。
M4 / 16GB / 256GB SSD
適合單一 App 的日常 CI、單一發布佇列,以及先確認跨平台專案能否穩定打包。建置、模擬器和其他程序會共用主機記憶體,建議先依序執行,觀察記憶體峰值後再增加任務。
保留依賴鎖定檔,為不同分支設定快取鍵;將舊產出移至團隊自己的產物儲存空間,避免封存檔持續占滿本機磁碟。
M4 / 24GB / 512GB SSD
適合多個 target 的 archive、Flutter / React Native 混合建置,以及需要同時保留更多依賴項與工具鏈的專案。24GB 可為並行任務提供更多記憶體空間,但仍需依實際專案測試並行數。
分別記錄建置時間、記憶體壓力與磁碟用量。如果瓶頸來自跨區下載或簽名鎖定等待,增加記憶體無法直接解決,應先調整快取與佇列。
若多個 Xcode 版本、依賴快取和 archive 持續增加,可考慮加購 +1TB SSD 或 +2TB SSD。擴充儲存空間只增加容量,不會增加統一記憶體;先確認用量來源,再決定是否擴充。
同一台雲端 Mac 也可執行本機模型推論、腳本驗證與小規模測試。先確認模型能否載入統一記憶體,再安排與發布任務錯開執行。
統一記憶體還要容納 macOS、推論框架、上下文快取和其他程序。模型檔案大小不等於執行所需記憶體;先用短輸入測試,再逐步增加上下文與批次大小。
記錄項目:模型版本、量化方式、記憶體峰值。
固定框架版本、輸入樣本與生成參數,再比較耗時與輸出。選擇 16GB 或 24GB,應以能否穩定執行目標任務為準,不預設適用所有情況的模型規模或速度。
記錄項目:輸入長度、執行參數、執行時間。
推論和 Xcode 編譯會競用運算與記憶體資源。發布時暫停實驗佇列;實驗腳本使用獨立目錄與權限,不讀取發布用鑰匙圈;長時間任務請及時儲存結果。
記錄項目:任務優先順序、停止條件、結果路徑。
適合需要 macOS 與 Apple Silicon 環境的驗證任務,但小規模實驗不等於大規模訓練。可先按日租用,確認自己的工作負載能順利執行後,再決定後續安排。
以下以兩種角色的情境說明任務安排,不代表已驗證的客戶評價或實測連線效能。
「我們把 Fastlane 放在固定主機上。誰值班都先查看同一份建置紀錄,不必再等某個人開電腦。」
「我會先用測試同事的網路測試遠端桌面,再選定節點。自動化測試走佇列,需要人工確認時再接手桌面操作。」
單一 App 順序建置可從 16GB 開始,多個 target 與混合建置則評估 24GB。選好主要工作節點,再跑通第一條自己的流水線。
獨享實體 Mac mini,每日 $19.2 起。實際可用狀態以控制台即時回報為準。