ligbox-ops-platform/deploy/vm123-finance-modern/smoke-vm123.sh
Ligbox Spec Hub b2e7e4014a feat(vm123): deploy-vm123-full.sh + smoke FINANCE_RELEASE=GREEN
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>
2026-07-02 17:24:00 +00:00

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