CI/CD: Melhorada validação de saúde do cron e conexão com o banco de dados
Some checks failed
Deploy WiFi-ETL Prod / deploy (push) Failing after 48s

This commit is contained in:
Rafael Alves Lopes 2026-04-23 10:04:39 -03:00
parent b992248eca
commit f63bf12f47

View File

@ -55,21 +55,58 @@ jobs:
- name: Validar saúde - CRON - name: Validar saúde - CRON
run: | run: |
docker exec wifi_etl_worker ps aux | grep cron || echo "⚠ Cron pode não estar rodando" echo "--- Processos no container ---"
docker exec wifi_etl_worker ps aux
echo ""
echo "--- Status do cron ---"
if docker exec wifi_etl_worker ps aux | grep -v grep | grep -q cron; then
echo "✓ Cron rodando"
else
echo "✗ Cron NÃO encontrado"
exit 1
fi
echo ""
echo "--- Próximas execuções agendadas ---"
docker exec wifi_etl_worker crontab -l || true
- name: Validar saúde - Database - name: Validar saúde - Database
run: | run: |
echo "--- Testando conexão com o banco ---"
docker exec wifi_etl_worker python3 << 'PYEOF' docker exec wifi_etl_worker python3 << 'PYEOF'
import psycopg2, os, sys import psycopg2, os, sys
host = os.getenv('DB_HOST', 'N/A')
port = os.getenv('DB_PORT', '5432')
dbname = os.getenv('DB_NAME', 'N/A')
user = os.getenv('DB_USER', 'N/A')
print(f" Host: {host}:{port}")
print(f" Database: {dbname}")
print(f" User: {user}")
print("")
try: try:
conn = psycopg2.connect( conn = psycopg2.connect(
host=os.getenv('DB_HOST'), host=host, port=int(port),
port=int(os.getenv('DB_PORT', 5432)), dbname=dbname, user=user,
dbname=os.getenv('DB_NAME'), password=os.getenv('DB_PASSWORD'),
user=os.getenv('DB_USER'), connect_timeout=5
password=os.getenv('DB_PASSWORD')
) )
print("✓ Banco conectado") cur = conn.cursor()
cur.execute("SELECT version();")
version = cur.fetchone()[0]
cur.execute("SELECT COUNT(*) FROM users;")
users = cur.fetchone()[0]
cur.execute("SELECT COUNT(*) FROM sessions;")
sessions = cur.fetchone()[0]
cur.execute("SELECT last_run_at FROM watermarks ORDER BY last_run_at DESC LIMIT 1;")
last_run = cur.fetchone()
print(f"✓ Banco conectado")
print(f" PostgreSQL: {version[:50]}")
print(f" Usuários: {users}")
print(f" Sessões: {sessions}")
print(f" Último ETL: {last_run[0] if last_run else 'nunca'}")
cur.close()
conn.close() conn.close()
except Exception as e: except Exception as e:
print(f"✗ Erro: {e}") print(f"✗ Erro: {e}")