團隊建置主機 · 啟用流程

將一次程式碼推送,
交給機房裡的 Mac

從下單到首次建置,一步步完成。先取得專屬主機,再驗證連線、工具鏈與簽章,最後將同一組指令交給 CI 執行。

獨享實體 Mac mini,非虛擬機。兩種 Apple M4 主機方案,每天 $19.2 起,全年 365 天持續運作。

已有訂單?請先到控制台取得連線資訊,再從本頁的首次登入步驟開始。

四個交接步驟,取得主機連線資訊

註冊、設定、付款與主機分配各預留約 1 分鐘,順利的話約 4 分鐘即可完成啟用。這是操作時間預估,不代表固定交付時限;郵件收取、付款確認與系統分配進度,請以控制台顯示為準。

  1. 註冊並登入控制台

    約 1 分鐘

    準備可接收驗證碼的團隊信箱,依頁面指示完成註冊並設定密碼。請使用有人持續管理的信箱,方便查詢訂單、續約及追蹤支援案件;勿將驗證碼轉寄到公開的建置記錄。

  2. 選擇機型、計費週期與節點

    約 1 分鐘

    選擇 Push M4 S 或 Push M4 L,再選擇計費週期與節點。單一 App 的日常 CI 可先考慮 16GB 方案;多個 target 平行執行 archive,則可考慮 24GB 方案。實際供應狀況以控制台即時資訊為準。

  3. 以美元付款

    約 1 分鐘

    選擇 USDT-TRC20,或使用 Visa / Mastercard / Amex 透過 Stripe 付款。可用的付款方式以結帳頁顯示為準;鏈上轉帳請確認網路、地址與金額,並等待控制台確認。付款已送出不代表服務已啟用。

  4. 取得主機與連線資訊

    約 1 分鐘

    系統分配主機後,請在訂單或執行個體詳情確認節點、連線位址、連接埠與登入帳號,並取得 SSH/VNC 連線資訊。後續提交支援案件時提供訂單編號即可,無須提供登入密碼或私鑰。

讓操作更順手,讓建置更靠近相依套件

5 個節點都提供兩種主機方案。先依日常操作建置主機的團隊成員所在地縮小選擇,再檢查程式碼儲存庫、套件來源與產物儲存空間之間的傳輸路徑。時區方便協作交接,不代表網路延遲較低;VNC 操作和下載相依套件應分別測試。

新加坡

團隊成員主要位於東南亞時,可優先評估此節點。請一併測試常用遠端連線網路與相依套件下載。

協作時區:UTC+8

東京

團隊主要配合日本工作日時,可優先評估此節點。請固定 runner 標籤,避免工作被派送到其他節點。

協作時區:UTC+9

首爾

韓國團隊成員經常操作桌面時,可優先評估此節點。請使用實際辦公網路測試圖形介面的反應速度。

協作時區:UTC+9

香港

適合評估華南與東南亞之間的協作路徑。遠端桌面與 SSH 分開使用,記錄則保留在建置系統中。

協作時區:UTC+8

美國東岸

北美團隊需要在白天操作時,可優先評估此節點。跨區交接時,請統一使用 UTC 記錄工作時間。

協作時區:UTC−5 / UTC−4

美國東岸有夏令時間。若兩地團隊都需要頻繁操作,可分別租用鄰近節點,再透過 CI 佇列協調工作;同一台主機仍須限制多項重型工作的並行數量。

先連上 SSH,再開啟 macOS 桌面

連線位址、連接埠與使用者名稱請以控制台資訊為準,勿沿用其他訂單的連線資料。下方指令會提示輸入實際值;執行前請確認本機已安裝 SSH 用戶端。

SSH:確認命令列連線

在本機終端機執行。首次連線時請核對主機指紋;若控制台未提供可供核驗的資訊,請先透過支援案件確認,勿直接略過主機身分驗證。

printf '連線位址:'
read -r MAC_HOST
printf 'SSH 連接埠:'
read -r MAC_PORT
printf '登入使用者:'
read -r MAC_USER
ssh -p "$MAC_PORT" "$MAC_USER@$MAC_HOST"

登入後執行 whoami 和 sw_vers,確認使用者與系統資訊。之後設定 SSH 金鑰時,只上傳公開金鑰;私密金鑰請保留在你的裝置或 CI 金鑰管理系統中。

VNC:完成桌面環境檢查

  1. 登入控制台,開啟已交付執行個體的連線資訊。
  2. 依執行個體提供的連線方式進入遠端桌面,確認位址與驗證資訊。
  3. 進入 macOS 後,檢查鍵盤、顯示畫面與網路,並依團隊規範設定 VNC 密碼。
  4. 完成 Xcode 首次啟動提示與鑰匙圈相關授權,再回到 SSH 執行建置。

桌面適合處理圖形介面的授權操作,命令列則用於執行可重現的指令碼。若連線逾時,請先確認連接埠、執行個體狀態與本機網路,再提交支援案件;反覆更改密碼無法排除網路問題。

留下可重現的 archive 建置紀錄

首次建置分為工具鏈、專案、簽章與匯出四項檢查。以下指令範例適用於使用 workspace 的 iOS 專案;若使用純 project,請將 -workspace 改成 -project,並填入專案自己的檔名。

確認目前使用的工具鏈

先確認系統目前選用的 Xcode,而不是只查看應用程式目錄中安裝了哪些版本。若同時安裝多個版本,請切換至專案指定的應用程式路徑,並再次確認版本與 SDK。

xcode-select -p
xcodebuild -version
xcodebuild -showsdks
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

下載程式碼,找出共用 scheme

輸入具有讀取權限的程式碼儲存庫位址,使用 SSH 金鑰或安全的憑證管理方式驗證身分,勿將存取權杖直接寫進指令。先依專案規範準備相依套件,再列出 workspace 與 scheme。

printf '程式碼儲存庫位址:'
read -r REPOSITORY_URL
git clone "$REPOSITORY_URL" app
cd app
git rev-parse HEAD
find . -name '*.xcworkspace' -prune
xcodebuild -list -workspace MyApp.xcworkspace

指定目錄並執行 archive

將 MyApp.xcworkspace 和 MyApp 替換成前一步確認的實際名稱。若建置需要裝置簽章,請先安全匯入相符的憑證與描述檔,並確認建置程序可存取鑰匙圈。

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

使用專案的匯出設定產生交付檔案

ExportOptions.plist 應使用專案既定的簽章與發佈設定,不可直接套用其他團隊的設定。archive 建置成功不代表匯出也成功;請分別保留兩個階段的結束狀態與記錄。

xcodebuild -exportArchive \
  -archivePath build/MyApp.xcarchive \
  -exportPath build/export \
  -exportOptionsPlist ExportOptions.plist

test -d build/MyApp.xcarchive
find build/export -maxdepth 1 -type f -print

交接時記錄四項資訊,不記錄金鑰

記錄提交 SHA、Xcode 版本、實際使用的 scheme 與產物路徑。首次失敗時,先查看第一個錯誤:相依套件解析失敗就檢查網路與版本鎖定;簽章失敗就檢查憑證與描述檔;匯出失敗則檢查匯出設定。請勿在同一次重試中同時更換節點、工具鏈與簽章設定。

將驗證過的指令交由 CI 執行

先使用同一個建置使用者手動成功執行,再註冊自架 runner。全年持續運作可確保主機供電與託管;runner 程序是否自動啟動、憑證是否有效,以及工作是否卡在佇列中,仍須由團隊設定與檢查。

註冊 runner,設定工作標籤

前往使用中的 CI 平台專案或組織設定,取得 macOS ARM64 runner 安裝指令。註冊資訊請使用目前專案提供的資料,不要重用已失效的權杖;標籤應包含節點、架構與用途。

  • GitHub Actions:在 Self-hosted runners 中產生註冊指令,並確認程式碼儲存庫的權限範圍。
  • GitLab Runner:依專案提供的位址與權杖註冊,並為需要 Xcode 的工作選擇適用的執行方式。
  • 僅允許受信任的流水線存取簽章資產;請勿在存有金鑰的主機上直接執行未經審查的程式碼。

首次串接時,只啟動一項建置工作。觀察記憶體、磁碟空間與執行時間後,再決定並行數量;主機為獨享,不代表應同時啟動所有 archive 工作。

設定自動啟動並檢查背景服務

GitHub Actions runner 解壓縮並完成註冊後,可在安裝目錄使用隨附的服務指令碼。以下不是下載或註冊指令;請先依 CI 平台指示完成前一步。

./svc.sh install
./svc.sh start
./svc.sh status

確認服務指令碼顯示正在執行,且 CI 平台顯示 runner 在線。若使用 LaunchAgent,通常需要該使用者登入;若要在無人值守時啟動,請依 runner 官方支援方式設定並驗證。服務已安裝,不代表重新啟動後一定能執行建置。

最後驗收:關閉目前終端機後仍能產生套件

關閉手動啟動 runner 的終端機,再從 CI 發起一項受控工作。確認執行使用者、選用的 Xcode、鑰匙圈存取、快取目錄與產物上傳。若節點預計無人值守,請再驗證系統恢復後 runner 的狀態;需要重新啟動時,先確認沒有其他工作正在執行。

獨享主機可保留 DerivedData 與相依套件快取。快取索引至少應區分工具鏈、相依套件鎖定檔與建置設定;保留產物前請設定清理規則,避免快取持續增加並占滿系統磁碟。

下一次推送,沿用這份建置紀錄

確認連線與首次建置都正常後,將節點、工具鏈與建置指令寫入團隊交接紀錄。若要查閱版本切換與快取設定,請繼續閱讀指南;若要擴充建置容量,請先確認方案。