Mesmo nível Desk: sync finance+console, smoke 11 checks, rule Cursor vm123-deploy-release.mdc e checklist unificado 12 passos. Co-authored-by: Cursor <cursoragent@cursor.com>
64 lines
2.5 KiB
Bash
Executable file
64 lines
2.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Smoke VM123 Finance + Ops Console — semáforo FINANCE_RELEASE=GREEN/RED
|
|
# Uso: ./smoke-vm123.sh
|
|
|
|
set -euo pipefail
|
|
|
|
LAN="${VM123_LAN:-http://10.10.10.123}"
|
|
FAIL=0
|
|
pass() { echo " OK $1"; }
|
|
fail() { echo " FAIL $1"; FAIL=$((FAIL + 1)); }
|
|
|
|
check_code() {
|
|
local name="$1" url="$2" expect="${3:-200}"
|
|
local code
|
|
code=$(curl -sk -o /dev/null -w "%{http_code}" --connect-timeout 15 "$url" 2>/dev/null || echo "000")
|
|
if [[ "$expect" == *"|"* ]]; then
|
|
IFS='|' read -ra codes <<< "$expect"
|
|
for c in "${codes[@]}"; do
|
|
[[ "$code" == "$c" ]] && { pass "$name ($code)"; return; }
|
|
done
|
|
fail "$name ($code, esperado $expect)"
|
|
else
|
|
[[ "$code" == "$expect" ]] && pass "$name ($code)" || fail "$name ($code, esperado $expect)"
|
|
fi
|
|
}
|
|
|
|
echo "==> Smoke VM123 Finance — $(date -Iseconds)"
|
|
|
|
# --- Console (Spec 019) — health canónico ---
|
|
body=$(curl -sk --connect-timeout 10 "${LAN}:8100/health" 2>/dev/null || true)
|
|
if echo "$body" | grep -qiE 'ok|healthy'; then
|
|
pass "Console LAN /health"
|
|
else
|
|
fail "Console LAN /health ($(echo "$body" | head -c 40))"
|
|
fi
|
|
|
|
check_code "Console public /health" "https://console.ligbox.com.br/health" "200"
|
|
check_code "Console public SPA" "https://console.ligbox.com.br/" "200"
|
|
|
|
# --- FOSS + Odoo (Docker) ---
|
|
check_code "FOSSBilling LAN :8092" "${LAN}:8092/" "200|301|302|403"
|
|
check_code "FOSSBilling public /admin" "https://financeiro.ligbox.com.br/admin" "200|301|302|403"
|
|
check_code "Odoo LAN /web/login" "${LAN}:8069/web/login" "200|301|302"
|
|
check_code "Odoo public login" "https://financeiro.ligbox.com.br/odoo/web/login?db=ligbox" "200|301|302"
|
|
|
|
# --- OpenPanel (host) ---
|
|
check_code "OpenPanel public" "https://openpanel.ligbox.com.br/" "200|301|302|403"
|
|
check_code "OpenAdmin public" "https://admin.openpanel.ligbox.com.br/" "200|301|302|403"
|
|
|
|
# --- Bridge FOSS ↔ OpenPanel (localhost VM123 — porta não exposta LAN) ---
|
|
BRIDGE_CODE=$(sshpass -p "${VM123_SSH_PASS:-805353}" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=8 \
|
|
root@10.10.10.123 'curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:18087/api' 2>/dev/null || echo "000")
|
|
[[ "$BRIDGE_CODE" =~ ^(200|401|403)$ ]] && pass "OpenPanel bridge :18087 ($BRIDGE_CODE)" || fail "OpenPanel bridge ($BRIDGE_CODE)"
|
|
|
|
# --- Desk upstream (VM122) — Console depende ---
|
|
check_code "Desk API VM122 (upstream)" "http://10.10.10.122:8080/api/health" "200"
|
|
|
|
echo ""
|
|
if [[ "$FAIL" -eq 0 ]]; then
|
|
echo "FINANCE_RELEASE=GREEN"
|
|
exit 0
|
|
fi
|
|
echo "FINANCE_RELEASE=RED ($FAIL falhas)"
|
|
exit 1
|