先遷移一條可重現的工作流程
選一條結果穩定的既有建置流程,記錄提交版本、Xcode 版本、依賴鎖定檔與簽署方式。先完成一次乾淨建置,再啟用快取;否則舊快取可能掩蓋環境差異。
- 在節點上安裝並註冊團隊的 self-hosted runner。
- 為執行器設定專案專屬標籤,例如
vmfly-ios,並限制可呼叫的儲存庫。 - 以同一個提交分別執行舊流程與新節點,核對測試結果、封存設定和產出檔案。
適合固定分支檢查、夜間打包與每天重複執行的回歸測試。
每天都要執行的單一 App 工作流程,可以先從月租 Glide M4 節點開始:Apple Silicon M4、16GB 記憶體、256GB SSD,每月 $100.7。將 GitHub Actions 的 macOS 工作指派給自己的 runner,就不必等其他租戶在共用主機上完成工作。
選一條結果穩定的既有建置流程,記錄提交版本、Xcode 版本、依賴鎖定檔與簽署方式。先完成一次乾淨建置,再啟用快取;否則舊快取可能掩蓋環境差異。
vmfly-ios,並限制可呼叫的儲存庫。適合固定分支檢查、夜間打包與每天重複執行的回歸測試。
整台主機專屬使用可避免與其他租戶爭用資源,但團隊提交的工作仍須安排佇列。遷移第一天別急著把所有工作同時塞進一台機器。
驗收標準不只是看到綠色狀態:也要確認團隊能下載產出檔案、保留記錄,且 runner 重新啟動後能恢復運作。月租適合持續使用,但不是每個專案都需要整個月開機。
版本發布週的瓶頸往往集中在幾個工作日。按天加租一台 Cruise M4 Pro,每天 $61.5,搭載 Apple Silicon M4 Pro、64GB 記憶體與 2TB SSD,可用於 UI 測試或封存;原有節點則繼續執行日常檢查,不必為短期尖峰長期添購硬體。
一台機器負責封存,另一台負責測試,資源分工才清楚。只增加 runner 數量,卻讓所有工作仍卡在同一個循序執行的階段,不會自動縮短發布流程。
先測試關鍵流程,再增加平行工作數;不承諾未經實測的建置加速幅度。
將短期節點的結束條件列入發布清單:完成最後一輪驗證、回傳產出檔案並儲存診斷記錄後,再結束租用。停止使用 runner 不代表後續計費安排已取消,請在控制台確認訂閱狀態與到期時間。
Unity 匯出的 Xcode 專案、依賴安裝、簽署與 IPA 封存,應在同一個可追蹤的環境中執行。Cruise M4 Pro 配備 64GB 記憶體與 2TB SSD,為大型專案、資源匯入和建置快取提供空間;實際容量與工作平行數仍須依專案驗證。
記錄 Unity 編輯器版本、專案依賴與 iOS 匯出設定;使用固定提交產生 Xcode 專案,避免本機與節點使用不同版本的編輯器。
檢查目標、建置設定、描述檔與匯出方式。透過團隊核准的憑證流程提供簽署資料,切勿將資料放進程式碼儲存庫或公開記錄。
快取可以重建,發布成品則必須留存。為 Unity 中間檔、DerivedData 與歷史封存檔分別設定目錄和清理規則,避免檔案長期累積、塞滿系統磁碟。
不只適用於無人值守打包。登入控制台後,可在瀏覽器中開啟節點的 macOS 遠端桌面,直接使用 Xcode 除錯;也可透過 SSH 執行指令碼,在 Apple Silicon 上驗證本機模型推論流程。
頻繁操作模擬器、檢查介面或逐步除錯時,網路往返時間比背景建置更容易影響使用體驗。可選機房位於新加坡、日本(東京)、韓國(首爾)與香港;先試用離團隊較近的節點,再決定長期使用地點。
瀏覽器桌面適合互動操作,SSH 適合自動化;兩者可用於同一個專案。
選型時應考量模型檔案、推論精度、上下文長度與同時執行的工具,而非只看模型名稱。先用短期租用完成環境安裝與範例驗證,再決定使用 Glide M4 或 Cruise M4 Pro。
64GB 記憶體不代表所有模型都能執行;相容性與容量需求須以實際工作驗證。
以下是 fastlane 流程示意,並非節點實測記錄。團隊須自行設定簽署儲存庫的存取權限、專案 scheme、App 識別碼與發佈憑證。先確認每個步驟都能獨立成功,再串接成無人值守工作。
$ bundle exec fastlane match appstore --readonly
[match] Fetching signing certificates and profiles
[match] Installing signing assets into the build keychain
[match] Signing assets are ready
$ bundle exec fastlane gym --scheme "$SCHEME" --export_method app-store
[gym] Archiving the selected scheme
[gym] Exporting the archive
[gym] IPA export completed
$ bundle exec fastlane pilot upload --ipa "$IPA_PATH"
[pilot] Uploading the selected IPA
[pilot] Upload completed; processing continues on TestFlight
CI 以唯讀方式取得既有簽署資料。若無法存取簽署儲存庫,請先檢查授權;切勿在記錄中輸出私密金鑰、權杖或解密密碼。
封存成功不代表 IPA 匯出成功。請保留封存記錄,分別檢查 scheme、簽署設定與匯出參數,避免將兩個階段混為同一種錯誤。
上傳後仍須等待發佈平台處理。請保存上傳結果並檢查處理狀態;不可只因網路上傳成功,就判定團隊驗收通過。
假設中小型團隊每天觸發 20 次建置。這個數字僅用來說明工作頻率,不代表效能測試,也無法單憑此推算所需機器數量。還應記錄單次耗時、同時觸發數、快取命中率與發布尖峰,再比較以下三種部署方式。
| 比較項目 | 租用 VMFly 實體節點 | 自購 Mac 硬體 | 共用虛擬機 |
|---|---|---|---|
| 費用結構 | 可按天、週、月或季租用。Glide M4 每月 $100.7,附加項目另計。 | 一次購機,另須負擔機櫃上架、網路、電費與日常管理成本。 | 依平台週期或用量計費;也須確認排隊規則與平行處理額度。 |
| 交付方式 | 確認付款後分配實體機;實際可用狀態以控制台即時顯示為準。 | 須完成採購、到貨、網路連線與遠端存取設定。 | 由平台調度資源;是否須排隊及環境能否保留,依服務而異。 |
| 專屬使用 | 整台 Mac mini 僅供一位客戶使用,並非虛擬機。 | 硬體由團隊專屬使用,現場與系統管理也由團隊負責。 | 通常與其他執行個體共用主機資源;隔離與資源分配由平台負責。 |
| 擴充彈性 | 可更換機型或增加節點;環境與資料移轉須自行安排。 | 擴容通常須添購硬體並部署,原有機器也會持續占用資產預算。 | 可選規格與擴容方式受平台方案與調度規則限制。 |
每天 20 次短時間建置,可能更需要穩定的快取;少量但耗時較長的 UI 測試,可能更適合拆分到不同節點執行。別只根據建置次數升級機型。使用同一個專案分別檢查耗時、記憶體與磁碟用量,再決定長期保留一台 Glide M4,或在版本發布期間加租 Cruise M4 Pro。
VMFly 提供專屬實體節點;團隊仍須管理專案依賴、runner 權限、簽署資料與產出檔案備份。如果需要全代管的工作流程編排,請先確認團隊現有工具是否已涵蓋這些工作。