ci(observability): gate frontend deploys with QA suite
Some checks failed
CD Pipeline / deploy (push) Has been cancelled
Some checks failed
CD Pipeline / deploy (push) Has been cancelled
This commit is contained in:
@@ -87,6 +87,19 @@ jobs:
|
||||
echo "label=🔨 強制重建 Docker Image" >> $GITHUB_OUTPUT
|
||||
exit 0
|
||||
fi
|
||||
|
||||
- name: 偵測 AI 觀測台前端 QA 是否需要執行
|
||||
id: observability_qa
|
||||
run: |
|
||||
CHANGED=$(git diff --name-only HEAD~1 HEAD 2>/dev/null || echo "")
|
||||
echo "$CHANGED"
|
||||
if echo "$CHANGED" | grep -qE '^(templates/admin/.*|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/(check_observability_|observability_contract|sync_observability_css)|docs/guides/observability_ui_governance\.md|docs/guides/deployment_sop\.md)'; then
|
||||
echo "needed=true" >> $GITHUB_OUTPUT
|
||||
echo "🎛️ AI 觀測台 QA: required"
|
||||
else
|
||||
echo "needed=false" >> $GITHUB_OUTPUT
|
||||
echo "ℹ️ AI 觀測台 QA: skipped"
|
||||
fi
|
||||
CHANGED=$(git diff --name-only HEAD~1 HEAD 2>/dev/null || echo "")
|
||||
if echo "$CHANGED" | grep -qE '^(Dockerfile|requirements\.txt|docker-compose\.yml)$'; then
|
||||
echo "type=rebuild" >> $GITHUB_OUTPUT
|
||||
@@ -144,6 +157,12 @@ jobs:
|
||||
run: |
|
||||
apt-get update -qq && apt-get install -y -qq rsync openssh-client
|
||||
|
||||
- name: AI 觀測台 Pre-deploy 靜態 QA
|
||||
if: steps.observability_qa.outputs.needed == 'true'
|
||||
run: |
|
||||
bash ./scripts/quick_review.sh --sync-observability-css
|
||||
bash ./scripts/quick_review.sh --observability-qa --skip-production
|
||||
|
||||
# ── 模式 A:僅同步 Python 檔案(最常見,~10s) ────────────────────────
|
||||
- name: 同步 Python 檔案至 188
|
||||
if: steps.deploy_type.outputs.type == 'sync'
|
||||
@@ -360,6 +379,11 @@ jobs:
|
||||
fi
|
||||
echo "✅ SPA Shadow OK — Flask 真接到請求(etag=$ETAG xpt=$XPT clen=$CLEN)"
|
||||
|
||||
- name: AI 觀測台 Post-deploy Production QA
|
||||
if: success() && steps.observability_qa.outputs.needed == 'true'
|
||||
run: |
|
||||
bash ./scripts/quick_review.sh --observability-smoke --base-url https://mo.wooo.work --timeout 12
|
||||
|
||||
# ── 觸發 Post-Deploy Code Review ─────────────────────────────────────
|
||||
- name: 觸發 AI Code Review
|
||||
if: success()
|
||||
|
||||
@@ -70,6 +70,13 @@ QA 套件會檢查:
|
||||
- `observability-system.css` 必須線上 HTTP 200,且包含核心 token/class。
|
||||
- `static/css/observability-system.css` 與 `web/static/css/observability-system.css` 必須一致。
|
||||
|
||||
CD 也會自動判斷觀測台相關變更:
|
||||
|
||||
- Deploy 前跑 `./scripts/quick_review.sh --sync-observability-css`。
|
||||
- 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,避免拖慢一般後端部署。
|
||||
|
||||
## 🔍 維運指令
|
||||
- **查看日誌**: `docker logs -f momo-pro-system --tail 100`
|
||||
- **進入資料庫**: `docker exec -it momo-db psql -U momo -d momo_analytics`
|
||||
|
||||
@@ -53,6 +53,7 @@ bash scripts/check_observability_suite.sh
|
||||
- Production smoke 必須看到 `觀測台 CSS: HTTP 200, markers=ok`。
|
||||
- 觀測台頁面清單、URL、`active_page`、內容 marker 不要分散維護,先改 `scripts/observability_contract.py`。
|
||||
- `quick_review.sh --observability-qa` 預設打 production `https://mo.wooo.work`;測 staging/localhost 時要明確帶 `--base-url`。
|
||||
- Gitea CD 會偵測觀測台 template/CSS/route/QA script/guide 變更:deploy 前跑 CSS sync + static QA,deploy 後跑 production smoke。
|
||||
|
||||
## 已鎖住的回歸
|
||||
|
||||
|
||||
Reference in New Issue
Block a user