4.3 KiB
4.3 KiB
🚀 EwoooC 部署標準作業程序 (SOP)
版本日期: 2026-05-05 (依 ADR-008 / ADR-011 修訂) 目標主機:
ollama@192.168.0.188(經192.168.0.110跳板)
🛠️ 開發同步流程
由於正式環境使用 Docker Compose + Volume Mount,部署邏輯如下:
1. 本地開發與測試
在 Mac 本地完成功能開發,並確認 ./app.py 執行無誤。
2. 同步程式碼 (SCP)
使用 110 作為跳板機,將本地檔案推送至 188 正式目錄:
# 同步單一檔案
scp -o ProxyJump=wooo@192.168.0.110 app.py ollama@192.168.0.188:/home/ollama/momo-pro/
# 同步目錄
scp -o ProxyJump=wooo@192.168.0.110 -r services/ ollama@192.168.0.188:/home/ollama/momo-pro/
若部署時在 110 → 188 的內層 scp 遇到 Host key verification failed,先在 110 修正 known_hosts,不要用 StrictHostKeyChecking=no 硬跳過:
ssh wooo@192.168.0.110 \
"ssh-keygen -R 192.168.0.188 && ssh-keyscan -H 192.168.0.188 >> ~/.ssh/known_hosts"
修正後先做只寫 /tmp 的 smoke,確認 scp 與 ssh 都通再部署正式檔案:
ssh wooo@192.168.0.110 \
"printf smoke > /tmp/momo_scp_smoke.txt && \
scp /tmp/momo_scp_smoke.txt ollama@192.168.0.188:/tmp/momo_scp_smoke.txt && \
ssh ollama@192.168.0.188 'cat /tmp/momo_scp_smoke.txt && rm -f /tmp/momo_scp_smoke.txt' && \
rm -f /tmp/momo_scp_smoke.txt"
3. 重啟容器
檔案進入掛載目錄後,重啟容器以加載變更:
ssh -J wooo@192.168.0.110 ollama@192.168.0.188 \
"cd /home/ollama/momo-pro && docker compose up -d --no-deps --force-recreate momo-app"
注意:
- 禁止使用
docker compose ... --remove-orphans。 - 禁止影響
momo-db的資料與容器生命週期。 - 若只同步文件、QA script、非 runtime 檔案,不需要重啟容器。
🏗️ 重大變更 (Rebuild)
若修改了 Dockerfile 或新增了 requirements.txt 套件:
ssh -J wooo@192.168.0.110 ollama@192.168.0.188 \
"cd /home/ollama/momo-pro && docker compose build momo-app && docker compose up -d --no-deps --force-recreate momo-app"
🎛️ AI 觀測台前端變更驗收
若修改以下任一類檔案,必須跑 AI 觀測台 QA 套件:
templates/admin/*observability*或任何/observability/*頁面 template。templates/ewoooc_base.html或templates/components/_ewoooc_shell.html。static/css/observability-system.css或web/static/css/observability-system.css。routes/admin_observability_routes.py。
本地先跑:
./scripts/quick_review.sh --sync-observability-css
./scripts/quick_review.sh --check-observability-css
./scripts/quick_review.sh --observability-qa
若要指定非 production 入口:
./scripts/quick_review.sh --observability-qa --base-url https://mo.wooo.work
部署後再跑:
./scripts/quick_review.sh --observability-qa
QA 套件會檢查:
/health必須 HTTP 200 且包含 healthy marker。- CD deploy gate 正反案例 self-test 必須通過。
- 10 個觀測台頁面必須 HTTP 200。
- 每頁必須包含自己的內容 marker。
- 不得外露
Traceback、ProgrammingError、UndefinedError、relation "、查詢失敗:。 observability-system.css必須線上 HTTP 200,且包含核心 token/class。static/css/observability-system.css與web/static/css/observability-system.css必須一致。
CD 也會自動判斷觀測台相關變更:
- Deploy 前跑
./scripts/quick_review.sh --check-observability-css,確認 CSS mirror 已提交一致,不在 runner 內偷偷修。 - Deploy 前跑
./scripts/quick_review.sh --observability-qa --skip-production。 - Deploy 後跑
./scripts/quick_review.sh --observability-smoke --base-url https://mo.wooo.work --timeout 12。 - 若變更與觀測台無關,CD 會跳過這組額外 QA,避免拖慢一般後端部署。
- 觸發範圍包含觀測台 templates、shell/topbar、觀測台 CSS、
routes/admin_observability_routes.py、quick_review.sh、check_observability_*、observability_contract.py、sync_observability_css.py。 - 觸發判斷集中在
scripts/check_observability_deploy_gate.py,不要在 workflow 內新增第二份長 regex。
🔍 維運指令
- 查看日誌:
docker logs -f momo-pro-system --tail 100 - 進入資料庫:
docker exec -it momo-db psql -U momo -d momo_analytics - 檢查磁碟:
df -h