--verbose 重跑保留證據。閘道預設埠 18789。延伸閱讀:docs.openclaw.ai;站內可併讀 設定驗證門禁與 閘道熱重載;鑑權邊界見 閘道安全硬化。
前置版本與目錄隔離
以 node -v 確認 22.14+;新專案建議直接對齊 24 LTS,避免舊版解析器與 peer 依賴落差。每一條 CI job 或每一個租戶使用獨立的 OPENCLAW_HOME(或文件指定的主目錄變數),與工程師本機互動式 shell、常駐 launchd 實例分目錄,可降低設定覆寫與權杖錯置。
- 在 job 開頭
export OPENCLAW_HOME="$RUNNER_TEMP/openclaw-$CI_JOB_ID"之類唯一路徑,必要時mkdir -p。 - 將
npm config get prefix、全域bin一併寫進合併日誌,對照which openclaw。 - 回滾檢查點:變更前複製
openclaw.json、記錄npm ls -g openclaw版本號與 plist 指紋。
非互動參數表(環境變數與 API 金鑰注入)
non-interactive onboard 的核心,是把所有會在終端詢問的項目前移到 CI 祕文或受控變數檔;並確保 launchd plist 的 EnvironmentVariables 與 job 的 export 同源,否則會出現「手動 curl 成功、守護程序 401」的假陰性。
| 用途 | 建議注入位置 | 備註 |
|---|---|---|
| 供應商 API | OPENAI_API_KEY 等 | 僅寫入 CI 祕文庫,不入庫 |
| 閘道鑑權 | OPENCLAW_GATEWAY_TOKEN | Bearer 與 plist 同步;禁尾隨換行 |
| 目錄隔離 | OPENCLAW_HOME | 每 job 唯一子目錄 |
| 探針 URL | http://127.0.0.1:18789/health | 埠變更時一併改環境檔 |
若無法自動化向導,可改以 openclaw doctor 的結構化輸出做門禁:將 invalid-key 路徑樹截進日誌,失敗時比對上一版檢查點 diff,再決定是否回滾檔案或釘版全域套件。
與 CI job 串聯的門禁腳本(合併輸出)
無人值守時,審閱者需要單一工件看清安裝、向導、doctor、閘道狀態與選擇性 HTTP 探針。請用子 shell 合併 stdout/stderr,再以非零退出碼讓 pipeline fail-closed。
區塊化:以 set -euo pipefail 開頭,依序安裝、onboard、doctor、gateway status。
合併:{ ...; } 2>&1 | tee openclaw-gate.log,上傳 openclaw-gate.log 為 artifact。
斷言:以 grep -E 搜尋必現字串(例如 healthy/listening/版本號),或解析 JSON 狀態欄位(若 CLI 支援)。
#!/usr/bin/env bash
set -euo pipefail
export OPENCLAW_HOME="${OPENCLAW_HOME:-$PWD/.openclaw-ci}"
mkdir -p "$OPENCLAW_HOME"
LOG="${CI_ARTIFACTS_DIR:-.}/openclaw-merge-gate.log"
{
echo "=== node ===" && node -v && which node
echo "=== install ===" && npm install -g openclaw@latest
echo "=== which ===" && which openclaw && openclaw --version
echo "=== doctor ===" && openclaw doctor
echo "=== gateway ===" && openclaw gateway status || true
echo "=== probe ===" && curl -sS -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer ${OPENCLAW_GATEWAY_TOKEN}" \
"http://127.0.0.1:18789/health" || true
echo
} 2>&1 | tee "$LOG"
# 範例 gate:請改為團隊約定斷言(例如 grep 關鍵健康字串、或解析日誌末段 HTTP 狀態碼)
# ! grep -qiE 'invalid-key|fatal' "$LOG" || exit 1
範例 URL:https://macpull.com/tw/blog/articles/2026-openclaw-remote-mac-env-merge-ci-gate-howto.html 可作為團隊 wiki 內嵌連結;官方文件基底為 https://docs.openclaw.ai。
為何遠端穩定環境支撐 OpenClaw 七乘二十四
閘道與模型路由依賴常駐行程、一致 PATH 與可預測磁碟水位;自建 runner 若頻繁休眠或與開發者共用主目錄,會放大「權杖漂移、埠占用、設定不同步」機率。MacPull 遠端 Mac提供專用節點與可觀測性習慣,較易維持七乘二十四自動化與告警閉環。
常見報錯 FAQ(埠占用、PATH、token)
埠占用:預設 18789;以 lsof -nP -iTCP:18789 -sTCP:LISTEN 定位,或在隔離 OPENCLAW_HOME 下改埠並同步探針 URL。
PATH:non-interactive shell 未載入 nvm;在腳本頂部 export 完整 PATH 與 NVM_DIR 後手動 source nvm.sh,再把 which openclaw 併入合併日誌。
token:Bearer 與 OPENCLAW_GATEWAY_TOKEN 不一致時多為 plist 未重載;備份檢查點後 launchctl kickstart 對應 label,並以單一日誌比對變更前後。
總結:結構化資料含 Article、HowTo、FAQPage。以分目錄、環境注入、合併日誌收斂無人值守閘道;導覽段落已內鏈設定門禁、熱重載與閘道安全硬化三則。