從連線到 CI 接入

把雲端 Mac 接入你的開發與建置流程

這份指南依照實際操作順序整理連線資訊、SSH 金鑰、遠端桌面、Xcode、依賴套件恢復與 CI Runner。每個步驟都附上檢查點,方便確認問題出在裝置、工具鏈還是 CI 設定。

裝置執行清單 READY PATH
01
建立安全連線 核對裝置位址、使用者名稱與 SSH 指紋
02
恢復建置環境 確認 Xcode、依賴套件、簽署資料與路徑
03
接入 CI Runner 以最小權限執行並匯出建置記錄
連線清單可直接執行 3 PHASES
05 準備階段連線、登入、安全、工具鏈、CI
04 CI 工具Actions、GitLab CI、Jenkins、Fastlane
01 裝置界線一筆訂單對應一台專屬實體節點
開始前的五項檢查

先跑通最短路徑,再遷移完整工作負載

首次使用不建議立即搬入所有儲存庫與金鑰。先用一個可獨立建置的小型專案驗證連線、權限、Xcode 與網路路徑,再逐步接入正式 CI 流程。

  1. 01

    取得連線資訊

    登入控制台,在裝置詳細資訊中核對裝置位址、連線使用者名稱、連接埠與初始憑證。不要從聊天記錄或舊文件複製過期資訊。

    完成標誌 裝置位址與 SSH 指紋已分開保存
  2. 02

    完成首次登入

    先建立 SSH 工作階段,再依需要開啟 macOS 圖形介面。首次連線時核對主機指紋,若出現異常變更,請暫停操作並重新確認。

    完成標誌 命令列與圖形介面都能正常進入
  3. 03

    強化帳戶安全

    更換臨時憑證、安裝專用 SSH 公開金鑰、刪除不再使用的授權項目,並將復原資訊存入團隊核准的密碼管理工具。

    完成標誌 只保留目前團隊需要的存取方式
  4. 04

    準備工具鏈

    確認 Xcode 版本、命令列工具、套件管理器、執行環境與專案依賴套件。記錄版本輸出,不要只依據圖形介面的應用程式名稱判斷。

    完成標誌 同一筆提交可在命令列完成建置
  5. 05

    接入 CI

    建立專用 Runner 身分,限制儲存庫與金鑰權限,先執行不含發佈動作的測試工作,再啟用封存或發佈階段。

    完成標誌 建置記錄、產物與結束碼都可追蹤
命令執行範例

用三段輸出定位連線、編譯與發佈流程

以下參數僅為結構範例,不代表你的實際裝置資訊。執行前請替換尖括號中的裝置位址、使用者名稱、專案名稱、Scheme 與工作區路徑。

MiniRent 建置檢查台 SESSION 01
CONNECT 建立 SSH 工作階段
$ ssh -i ~/.ssh/minirent_ed25519 \
  <使用者名稱>@<裝置位址>

The authenticity of host cannot be established.
ED25519 key fingerprint is <指紋>

$ sw_vers
ProductName: macOS
ProductVersion: <系統版本>

首次連線前,請從控制台獨立核對指紋。若已保存的指紋突然變更,不要直接接受新值。

BUILD 執行 Xcode 建置
$ xcodebuild -version
Xcode <版本>
Build version <建置編號>

$ xcodebuild \
  -workspace <專案名稱>.xcworkspace \
  -scheme <Scheme> \
  -destination 'generic/platform=iOS' \
  clean build | tee build.log

** BUILD SUCCEEDED **

先在同一筆提交上執行 clean build。發生錯誤時保留完整結束碼與記錄,不要只截取最後一行。

AUTOMATE 驗證 Fastlane 流程
$ bundle exec fastlane <lane名稱>

[fastlane] Checking environment
[fastlane] Resolving signing inputs
[fastlane] Building archive
[fastlane] Export completed
[fastlane] Lane finished successfully

先在不含正式發佈動作的 lane 中驗證環境變數、簽署路徑與封存目錄,再啟用後續步驟。

範例參數必須替換。不要把私密金鑰、存取權杖、憑證密碼或完整裝置位址寫入公開記錄。
遷移路徑

從本機 Mac 到雲端 Mac,分三層遷移資料、工具鏈與自動化

遷移的目標不是複製整個使用者目錄,而是讓程式碼、依賴套件、簽署資料與 Runner 權限都能驗證、替換與復原。

本機 Mac
雲端 Mac
  1. 階段 1 · 資料同步

    只遷移可驗證的工作資料

    程式碼優先從受控儲存庫重新下載。大型資源、快取與建置產物應分別評估,不要直接複製整個使用者目錄。

    • 記錄來源儲存庫位址、目標分支與提交雜湊
    • 核對大型資源的檔案數量、總容量與檢查值
    • 排除 DerivedData、暫存封存檔與可重新產生的快取
    • 同步後執行一次唯讀檢查,確認權限與換行格式
  2. 階段 2 · 工具鏈恢復

    依照版本清單重建 Xcode 環境

    先恢復能完成基本建置的最小工具集,再加入套件管理器、模擬器執行環境與專案專用指令碼。

    • 記錄 Xcode 版本、建置編號與目前開發者目錄
    • 鎖定 Ruby、Bundler、Node 與套件管理器版本
    • 從鎖定檔恢復依賴套件,避免無限制更新
    • 用固定提交執行 clean build 並保存基準記錄
  3. 階段 3 · CI 接入

    讓 Runner 與金鑰維持最小權限

    自動化身分應與人工登入分開。金鑰透過受控注入提供,建置結束後清除暫存檔案與敏感環境變數。

    • 為 Runner 建立獨立執行目錄與標籤
    • 限制可存取的儲存庫、分支與發佈環境
    • 在輸出記錄前遮蔽權杖、密碼與憑證路徑
    • 先執行測試工作,再逐步啟用封存與發佈
遠端存取

分開處理憑證、工作階段與異常連線

連線問題通常來自四個層次:本機網路、裝置位址與連接埠、身分驗證、遠端工作階段狀態。分層排查比反覆重試更有效率。

存取清單

建立可稽核的連線習慣

ACCESS / 04

憑證保存

將裝置位址、使用者名稱與私密金鑰分開保存。團隊共用時使用受控的密碼管理工具,不要把私密金鑰放入儲存庫、建置產物或工單附件。

分開存放

SSH 金鑰

為裝置使用獨立金鑰組,設定清楚的註解並記錄建立者。成員離開專案或裝置用途變更時,刪除對應公開金鑰並輪換相關憑證。

獨立金鑰

遠端桌面工作階段

圖形介面適合進行 Xcode 設定、憑證匯入與介面檢查。長時間建置應交由命令列或 Runner 執行,避免依賴持續開啟的桌面工作階段。

工作分層

退出閒置工作階段

工作結束後退出遠端桌面,並關閉不再需要的連接埠轉送。背景建置應使用明確的工作管理方式,不要依靠未關閉的終端機視窗維持。

主動退出
連線失敗

先驗證網路路徑

確認目前的裝置位址與連接埠,再檢查本機網路是否限制目標連接埠。連線逾時通常不同於金鑰遭拒,應分別記錄錯誤資訊。

整理資訊後聯絡團隊
指紋異常

暫停自動重新連線

不要刪除本機記錄後直接繼續。先在控制台核對裝置資訊,再透過工單確認變更原因,確認後才更新已知主機記錄。

前往控制台提交工單
Xcode 建置

讓每次建置都能回答版本、輸入、產物與失敗原因

圖形介面能完成建置,不代表 CI 能重現。正式接入前,至少完成一次命令列 clean build,並保留版本、參數、結束碼與完整記錄。

確認版本

執行 xcodebuild -version,同時記錄 xcode-select -p 輸出,避免命令列工具指向錯誤目錄。

匯入簽署資料

只匯入目前專案需要的憑證與描述檔。限制鑰匙圈權限,透過受控變數提供密碼,不要寫入指令碼與記錄。

管理 DerivedData

為 CI 流程指定可預測的目錄。排查快取問題時先記錄容量,再清理目標專案的對應內容,不要把清除整個磁碟作為預設動作。

控制平行建置

先以單一工作建立基準,再逐步增加並行數量。觀察記憶體、磁碟與建置時間,避免多個工作競用同一個 DerivedData 目錄。

匯出記錄

使用 tee 保存原始輸出,並記錄結束碼、提交雜湊、Scheme、目標平台與產物路徑,方便重現。

建議基準記錄

一次成功建置至少留下八項資訊

  • 提交雜湊
  • Xcode 版本
  • Scheme
  • 目標平台
  • 依賴鎖定檔
  • 開始與結束時間
  • 結束碼
  • 產物路徑
CI/CD 接入

四類 Runner,共用一套接入檢查標準

無論使用哪種編排工具,都應明確定義執行身分、工作目錄、標籤、金鑰來源、並行上限、記錄位置與清理動作。

GH
GitHub Actions

自託管 Runner 檢查表

  • 為 Runner 設定能表達晶片、用途與環境的標籤
  • 限制可呼叫該 Runner 的儲存庫與工作流程範圍
  • 工作開始時輸出 Xcode 與依賴套件版本
  • 使用受控機密注入,禁止回顯敏感變數
  • 工作結束後清理暫存鑰匙圈、封存檔與工作目錄
GL
GitLab CI

Runner 註冊檢查表

  • 使用專用標籤將 macOS 工作路由至目標裝置
  • 確認受保護變數只在允許的分支與環境中可用
  • 固定建置目錄,避免不同專案共用敏感快取
  • 設定產物與記錄的明確保留範圍
  • 驗證取消工作後子程序與暫存檔案能夠退出
JK
Jenkins

Agent 節點檢查表

  • 依裝置能力設定節點標籤與執行器數量
  • 將憑證綁定至特定 Job,不放入全域環境
  • 為工作區、快取與封存目錄設定容量檢查
  • 記錄 Pipeline 使用的工具版本與參數
  • 失敗後封存必要記錄,再執行安全清理
FL
Fastlane

自動化 Lane 檢查表

  • 透過 Bundler 鎖定 Fastlane 與外掛程式版本
  • 將測試、封存與發佈拆成可獨立驗證的 lane
  • 執行前檢查環境變數是否完整,但不輸出其值
  • 明確定義封存檔、匯出檔案與記錄的保存位置
  • 先驗證不含發佈動作的流程,再開放正式步驟
儲存空間與裝置並聯

依工作集大小選擇容量,不要把快取當成長期資料

基本 SSD 適合程式碼、依賴套件與一般建置;擴充容量更適合大型資源、多個平行工作區及需要保留的建置產物。重要資料仍需獨立備份。

256GB / 512GB

方案基本 SSD

MiniRent M4 Core 提供 256GB SSD,MiniRent M4 Plus 提供 512GB SSD。適合程式碼儲存庫、依賴套件、工具鏈與容量可控的建置快取。

  • 定期檢查 DerivedData 與封存目錄
  • 上傳建置產物後清理本機副本
  • 不要把可重新建立的快取當作長期檔案
+1TB SSD

中型工作集擴充

適合多個活躍儲存庫、較大的媒體資源,或需要保留更多建置產物的團隊。

每天
$3
每週
$8
每月
$14.8
每季
$40.3
+2TB SSD

大型資源與封存擴充

適合大型模型、多個工作區、長時間保留建置產物,或高容量測試資料。

每天
$6
每週
$16
每月
$29.6
每季
$80.6
Thunderbolt 5

實體裝置並聯

適合明確需要裝置間高速連線的實驗與資料交換情境,依參與並聯的每台裝置計費。

每天每台
$1.8
每週每台
$4.8
每月每台
$8.9
每季每台
$24.2
下單前先估算工作集峰值

分別計算程式碼、依賴套件、模型或媒體資源、建置快取、封存產物與安全餘量。附加選項與實際可用性以控制台即時回傳為準。

設定裝置與儲存空間
技術內容規劃

依工作類型繼續閱讀

以下主題圍繞實際部署、工具鏈恢復與硬體選型整理。可使用標籤縮小主題範圍,文章上線後會統一在技術部落格中查看。

AI 與 MLX

MiniRent 實戰:在雲端 Mac 部署 AI 模型推論

從選擇 Apple Silicon 設定、安裝 MLX 環境,到遠端執行推論服務,完整整理模型準備、效能觀察、連接埠保護與結果匯出的流程。

內容規劃 · 部署實戰
架構選型

雲端 macOS 與本機開發:團隊該如何選擇

從裝置專屬性、交付速度、遠端協作、工具鏈一致性、管理投入與升級彈性六個面向建立決策框架。

內容規劃 · 團隊決策
Xcode 建置

MiniRent Xcode 雲端建置完整指南

逐步完成遠端連線、Xcode 版本確認、依賴套件恢復、簽署資料匯入、命令列建置與記錄封存,並提供常見編譯失敗的排查順序。

內容規劃 · 建置手冊
硬體選型

Mac mini 與 Mac Studio 選型:先看工作負載,再看規格

圍繞 Xcode 平行建置、持續整合、記憶體壓力、AI 推論與外接儲存需求,說明如何根據可量測的工作指標做決定。

內容規劃 · 規格評估
遠端開發

從零建立 MiniRent 遠端 Mac 開發環境

涵蓋 SSH 金鑰、遠端桌面、程式碼同步、開發工具安裝、憑證管理與工作階段安全,協助開發者遷移日常工作流程。

內容規劃 · 環境建立
AI 與 MLX

MLX 框架入門:在雲端 Mac 完成第一次推論實驗

介紹 MLX 的環境準備、模型取得、基本推論、記憶體觀察與結果保存方式,並補充遠端實驗中的憑證保護、資料同步與資源釋放建議。

內容規劃 · 入門實驗

目前顯示全部 6 個主題。

問題排查與求助

先蒐集證據,再決定清理、重試或提交工單

工單中提供明確時間、裝置識別資訊、執行命令、結束碼、重現步驟與去識別化記錄,通常比「無法使用」更快進入有效排查。

無法連線至裝置時,應依什麼順序檢查?
  1. 前往控制台核對目前的裝置位址、連接埠、使用者名稱與裝置狀態。
  2. 區分連線逾時、連線遭拒、指紋變更與金鑰遭拒四類錯誤。
  3. 改用已知可存取目標連接埠的網路進行一次對照測試。
  4. 使用詳細模式記錄 SSH 協商階段,但提交前移除裝置位址與敏感欄位。
  5. 仍無法連線時,附上問題發生時間、網路位置與錯誤節錄提交工單。
Xcode 建置突然失敗,應先查看哪裡?
  1. 記錄失敗的提交、Xcode 版本、Scheme、目標平台與完整結束碼。
  2. 確認依賴鎖定檔是否變更,套件來源與網路要求是否成功。
  3. 檢查簽署資料、鑰匙圈權限與描述檔是否仍與目標相符。
  4. 在隔離的 DerivedData 目錄執行一次 clean build。
  5. 對照最近一次成功記錄,定位第一個真正的錯誤,而不是最後一行摘要。
磁碟空間不足時,應該清理哪些內容?
  1. 先統計工作區、DerivedData、封存檔、模擬器資料與依賴快取的使用量。
  2. 將需要保留的建置產物上傳至團隊指定位置,並驗證完整性。
  3. 優先刪除可重新產生的快取與已確認上傳的舊封存檔。
  4. 檢查 CI 是否因失敗工作而跳過清理步驟。
  5. 長期工作集持續增加時,再評估 +1TB SSD 或 +2TB SSD。
遠端操作延遲升高,如何區分本機網路與節點路徑?
  1. 記錄問題發生時間、目前連線城市、電信業者與接入方式。
  2. 比較有線與無線網路,排除本機封包遺失與訊號波動。
  3. 分別觀察 SSH 互動、遠端桌面與檔案傳輸,確認是否只有單一通訊協定異常。
  4. 停止佔用上行頻寬的大型檔案同步,再進行一次對照測試。
  5. 提交工單時提供多次測試的中位表現,不要只提供一次峰值。
命令可執行,但讀寫或簽署權限失敗,該如何處理?
  1. 確認目前的執行使用者與檔案擁有者,不要先用高權限命令繞過問題。
  2. 檢查工作目錄、鑰匙圈、指令碼與建置產物目錄的最小必要權限。
  3. 確認 CI Runner 與人工登入是否使用不同使用者或環境變數。
  4. 重新檢查指令碼執行權限、路徑大小寫與掛載磁碟區權限。
  5. 提交工單前,移除憑證名稱、權杖與完整路徑中的敏感資訊。

準備好將建置工作遷移至專屬實體 Mac mini 了嗎?

先選擇 M4 設定、租用週期與節點,再依照本頁清單完成連線、工具鏈恢復與 CI Runner 接入。實際可用性與交付狀態以控制台即時回傳為準。