wifi-etl/.gitea/workflows/deploy.yml
Rafael Lopes be48656892
Some checks failed
Deploy WiFi-ETL Prod / deploy (push) Failing after 39s
FIX CI/CD: Ajustado observer
2026-04-23 16:13:27 -03:00

121 lines
3.9 KiB
YAML

name: Deploy WiFi-ETL Prod
on:
push:
branches:
- main
jobs:
deploy:
runs-on: vm-prod
steps:
- name: Preparar ambiente
run: |
mkdir -p /home/desenvolvimento/wifi-etl
chown $(whoami):$(whoami) /home/desenvolvimento/wifi-etl
- name: Garantindo safe directory
run: |
git config --global --add safe.directory /home/desenvolvimento/wifi-etl
- name: Clone/Update código
run: |
set -e
if [ -d /home/desenvolvimento/wifi-etl/.git ]; then
cd /home/desenvolvimento/wifi-etl
git fetch origin
git reset --hard origin/main
git clean -fd
else
git clone http://10.0.120.75:3030/Sothis/wifi-etl.git /home/desenvolvimento/wifi-etl
fi
echo "✓ Código atualizado"
- name: Copiar .env
run: |
echo "Rodando como: $(whoami)"
echo "Listando diretório:"
ls -la /home/desenvolvimento/.envs/wifi_etl/ || echo "ERRO: sem acesso ao diretório"
cp /etc/wifi-etl/.env /home/desenvolvimento/wifi-etl/.env
echo "✓ .env copiado"
- name: Build e deploy container
run: |
set -e
cd /home/desenvolvimento/wifi-etl
docker system prune -f || true
docker-compose -f infra/docker-compose.prod.yml down || true
docker-compose -f infra/docker-compose.prod.yml build --no-cache
docker-compose -f infra/docker-compose.prod.yml up -d
echo "✓ Container iniciado"
- name: Aguardar inicialização
run: sleep 5
- name: Validar saúde - CRON
run: |
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
run: |
echo "--- Testando conexão com o banco ---"
docker exec wifi_etl_worker python3 << 'PYEOF'
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:
conn = psycopg2.connect(
host=host, port=int(port),
dbname=dbname, user=user,
password=os.getenv('DB_PASSWORD'),
connect_timeout=5
)
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()
except Exception as e:
print(f"✗ Erro: {e}")
sys.exit(1)
PYEOF
- name: Verificar logs iniciais
if: always()
run: |
docker logs --tail 20 wifi_etl_worker || true