從節點交付到建置基準

將雲端 Mac 接入你的開發與 CI 流程

先選定區域、機型與週期,再完成憑證強化、SSH 驗證、圖形桌面初始化及首次 Xcode 建置。每一步都留下可複查的狀態紀錄。

節點類型
獨享 Apple Silicon 實體節點
供應區域
SG · JP · KR · HK
完成目標
首次建置與 CI 測試任務通過
ORB / NODE COMMISSIONING RUNBOOK 01
選型 強化 連線 建置 接入 CI
目標節點 Apple Silicon / 獨享實體機
區域
待選擇
SSH 金鑰
待輸入
Xcode 基準
待驗證
執行器
待註冊
交付判定 全部檢查通過後再承載正式任務
地址、憑證與即時可用狀態以控制台回傳為準 365 DAYS
開始前檢查

先備妥六項輸入資料

選型不只是看晶片。區域、存取方式、工具鏈版本與團隊負責人,都會直接影響節點開通後的第一個小時。

01

目標區域

在新加坡、日本(東京)、韓國(首爾)與香港中,選擇最適合主要開發者或製品儲存路徑的區域。不要只依個人所在地判斷,也要考量程式碼儲存庫與依賴來源的網路路徑。

SG · JP · KR · HK
02

節點機型

輕量建置可從 Orb M4 16 開始;較大的依賴圖與平行任務可評估 Orb M4 24;高記憶體建置或本機 AI 實驗則選擇 Orb M4 Pro。

共 3 種配置
03

租用週期

短期驗證可選日租或週租,穩定的流水線可選月租或季租。先記錄內部驗收時間,再決定是否續租,避免將業務發布節點交給無人跟進的臨時訂單。

日 · 週 · 月 · 季
04

SSH 公開金鑰

準備專用於此節點的 Ed25519 公開金鑰,並確認私鑰只儲存在授權裝置或受控金鑰系統中。不要複製個人日常使用的金鑰作為團隊共用憑證。

推薦 Ed25519
05

團隊存取清單

明確指定節點負責人、CI 管理者與故障聯絡人。每位成員使用獨立金鑰,保留加入、變更與撤銷紀錄,不要用一份憑證覆蓋整個團隊。

一人一份憑證
06

macOS 工具鏈

提前鎖定 macOS、Xcode、命令列工具、Ruby、Node、CocoaPods 與依賴管理器版本。將版本要求寫入儲存庫,節點初始化時逐項核對。

版本必須可重現
訂購與交付

用三次選擇確定節點配置

控制台會依機型顯示可選區域。目錄中的組合通常可供訂購,實際可用狀態以控制台即時回傳為準。

  1. 01

    選擇三種機型之一

    Orb M4 16 配備 M4、16GB 記憶體與 256GB 儲存空間;Orb M4 24 配備 M4、24GB 記憶體與 512GB 儲存空間;Orb M4 Pro 配備 M4 Pro、64GB 記憶體與 2TB 儲存空間。

  2. 02

    選擇區域與租用週期

    區域可選新加坡、日本(東京)、韓國(首爾)或香港;週期可選日、週、月或季。團隊應將區域代碼與續租時間寫入內部資產紀錄。

  3. 03

    核對訂單並等待交付紀錄

    確認機型、區域、週期與附加項目後完成下單。節點地址、初始存取資料與服務狀態會在控制台提供,請勿透過未授權管道轉發。

節點憑證與安全性

先收緊入口,再安裝開發環境

初始資料僅用於建立第一條受控連線。在完成金鑰驗證、存取調整與復原紀錄前,不要匯入正式環境儲存庫或簽署材料。

FIRST ACCESS RECORD 首次登入後執行

將臨時存取轉為可稽核入口

  • 核對交付資料 確認節點編號、地址、連接埠與區域和訂單一致,並將核對結果記錄到團隊資產清單。
  • 寫入獨立 SSH 公開金鑰 為管理員、開發者與自動化執行器分配不同金鑰,避免人員存取與 CI 存取共用同一把私鑰。
  • 調整存取設定 確認金鑰登入可用後,再收緊臨時憑證的使用範圍。每次修改後都保留一條已驗證的復原路徑。
  • 儲存復原資訊 記錄節點編號、獲授權成員、金鑰指紋、復原負責人與最後驗證時間;復原資料應與節點本身分開儲存。
憑證邊界

人員與自動化分離

開發者金鑰用於互動式排查,執行器金鑰只授予流水線所需的權限。成員離開團隊時撤銷對應公開金鑰,不必更換全員共用的憑證。

獨立指紋可追蹤
復原驗證

修改前先確認回退路徑

變更網路、SSH 或圖形工作階段設定前,保留目前可用的工作階段,並確認控制台中的復原資訊已由第二位負責人複核。

查看連線排查步驟
首次 SSH 連線

先驗證指紋,再驗證系統狀態

不要跳過主機指紋核對。地址與連接埠來自控制台,可信指紋應與團隊已確認的交付紀錄進行比對。

節點接入紀錄 待執行
# 僅在已取得控制台地址後設定變數
export NODE_HOST="節點地址"
export NODE_PORT="22"

# 修正專用私鑰權限
chmod 600 ~/.ssh/orbvps_node

# 讀取並顯示主機指紋,隨後與交付紀錄核對
ssh-keyscan -p "$NODE_PORT" "$NODE_HOST" \
  | ssh-keygen -lf -

# 發起首次連線
ssh -p "$NODE_PORT" \
  -i ~/.ssh/orbvps_node \
  nodeadmin@"$NODE_HOST"

# 登入後確認硬體、系統與磁碟狀態
$ uname -m
arm64
$ sw_vers
$ sysctl -n machdep.cpu.brand_string
$ df -h /
$ uptime
SSH ACCEPTANCE 4 CHECKS
  1. 指紋一致 掃描結果必須與可信交付紀錄一致。若不一致,請停止連線並透過控制台工單核驗。
  2. 金鑰權限正確 私鑰權限過寬時,SSH 會拒絕載入。請將權限修正為僅目前使用者可讀寫。
  3. 架構為 arm64 登入後確認處理器架構與晶片資訊,避免在錯誤主機上繼續部署工具鏈。
  4. 磁碟與執行時間可讀 記錄根磁碟區剩餘空間、系統版本與執行時間,作為後續建置故障排查的初始狀態。
圖形桌面初始化

將 VNC 工作階段調整為可重複使用的工作環境

圖形桌面適合完成顯示、系統偏好設定與 Xcode 首次互動設定。公開頁面不提供連線憑證,具體地址與存取資料請在開通後查看。

DESKTOP BASELINE 圖形工作階段驗收清單

每項設定完成後退出並重新連線一次,確認配置在新的工作階段中仍然有效。

01

顯示與解析度

先選擇適合目前網路與螢幕的解析度。文字過小或畫面延遲明顯時,優先降低解析度,再評估網路路徑。

02

系統語言與時區

統一團隊約定的系統語言、地區格式與時區,讓建置記錄、日期輸出與自動化腳本保持一致。

03

鎖定螢幕策略

確認鎖定螢幕不會中斷需要持續執行的任務,同時限制未授權存取。互動式工作階段與 CI 任務應分別驗證。

04

斷線重連

主動中斷一次圖形工作階段,再重新連線並確認桌面狀態、解析度與目前執行中的程序符合預期。

遷移路徑

從本機 Mac 遷移至穩定的雲端建置節點

遷移分三個階段進行。先移動可驗證的資料,再鎖定工具鏈,最後接入 CI。不要一次將儲存庫、依賴項目與自動化設定未經檢查地複製過去。

LOCAL
01

遷移資料與儲存庫

只遷移必要的儲存庫、依賴鎖定檔、建置腳本與測試資料。排除暫存快取、舊製品與無主檔案,遷移後核對儲存庫狀態與關鍵檔案摘要。

  • 確認預設分支與遠端地址
  • 檢查子模組與大型檔案依賴
  • 對測試資料執行去識別化
TOOLCHAIN
02

安裝並鎖定工具鏈

依儲存庫要求安裝 Xcode、命令列工具與依賴管理器。將實際版本輸出儲存至基準紀錄,不要以「最新版」取代明確版本號。

  • 記錄 Xcode 與 SDK 版本
  • 依鎖定檔還原依賴
  • 固定 Shell 與執行環境路徑
CLOUD MAC
03

接入 CI 並驗證回滾

註冊 self-hosted runner 後,先執行受控測試任務。確認失敗記錄、快取清理與復原步驟可執行,再逐步接入正式分支。

  • 使用專用標籤限制任務範圍
  • 驗證快取命中與清理
  • 演練停用執行器與回退

遷移完成標準:同一提交在本機與雲端 Mac 上使用已記錄的工具鏈完成建置,關鍵測試結果一致,並且能依文件重新部署。

首次建置

建立一份可複查的成功基準

首次建置的目標不是追求最短耗時,而是證明工具鏈、依賴項目、權限與輸出路徑都可重複。

  1. 01

    檢查 Xcode 路徑與版本

    確認目前選取的開發者目錄、Xcode 版本與可用 SDK 符合專案要求。

  2. 02

    接受授權並安裝依賴

    接受 Xcode 授權後,嚴格依照鎖定檔安裝 Ruby、Node、CocoaPods 或其他專案依賴。

  3. 03

    執行受控建置

    明確指定 workspace、scheme 與 configuration,並將完整標準輸出儲存到獨立記錄檔。

  4. 04

    儲存基準紀錄

    記錄提交編號、工具鏈版本、開始與結束時間、結束代碼及製品位置,作為後續變更的比對依據。

首次建置基準 命令範例
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

$ xcodebuild -version
Xcode <專案要求版本>

$ sudo xcodebuild -license accept
$ bundle install
$ bundle exec pod install

$ mkdir -p build-logs
$ set -o pipefail
$ xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -configuration Release \
  clean build \
  | tee build-logs/first-success.log

** BUILD SUCCEEDED **
接入 CI

讓執行器只接收應執行的任務

接入 self-hosted runner 後,先使用專用標籤與測試分支限制範圍,再逐步開放正式建置。

RUNNER PROFILE

執行器身分

名稱
orb-m4-ci-01
標籤
macos · arm64 · xcode
工作目錄
/Users/runner/work
並行策略
從單一任務開始驗證
ACCESS POLICY

權限與金鑰

  • 獨立的執行器使用者 不要讓自動化任務長期使用管理員互動帳戶。
  • 依用途拆分金鑰 儲存庫讀取、製品寫入與部署操作分別授予最低必要權限。
  • 敏感值不寫入儲存庫 透過受控的 CI 變數注入,並檢查記錄檔不會回顯完整內容。
CACHE CONTROL

快取與復原

  • 快取鍵包含版本 將鎖定檔摘要、架構與工具鏈版本納入快取鍵。
  • 允許乾淨重建 每條流水線都應能在清空快取後完成一次完整建置。
  • 限制工作目錄增長 定期檢查 DerivedData、封存檔與暫存製品的佔用空間。
CONTROLLED TEST JOB

先執行一項可預測的測試任務

任務只執行環境輸出、依賴還原、單元測試與一次不發布的建置。確認標籤路由正確、記錄完整、快取可清理,且失敗時能停止後,再接入正式分支。

預期結束代碼
0 / 成功
必須保留
記錄檔、提交編號、製品摘要
失敗處理
停止正式任務並回到基準檢查
上線前核對

六項狀態全部明確後再承載正式建置

將以下檢查結果寫入團隊運行手冊。節點可以全年運作,但建置流程仍需要明確的資料、監控與回應責任。

備份

儲存庫、建置設定、金鑰復原資訊與必要製品均有節點之外的副本,並完成一次復原驗證。

已驗證復原

監控

至少記錄磁碟剩餘空間、建置結束代碼、任務等待時間與執行器上線狀態,並定義異常閾值。

指標有負責人

通知聯絡人

主要負責人與替補負責人都能存取節點紀錄、建置記錄檔與控制台工單,交接路徑已經寫明。

主要與備援聯絡人齊全

續租時間

訂單週期與內部確認時間已登記,不依賴單一成員記憶。變更配置前先評估目前的任務時段。

週期已登記

撤銷存取權

已列出人員金鑰、執行器金鑰及對應權限,能在不影響其他成員的情況下個別撤銷。

每項各有一份紀錄

故障聯絡路徑

節點編號、發生時間、重現步驟與去識別化記錄檔可隨時整理,並能由獲授權成員登入控制台提交工單。

資料可直接提交
準備部署

從一台可驗證的雲端 Mac 開始

選擇機型、區域與週期,開通後依本指南完成安全接入、首次建置與 CI 驗收。