wifi-etl/.gitea/workflows/deploy.yml
Rafael Lopes 331a021d9a
Some checks failed
Deploy WiFi-ETL Prod / deploy (push) Failing after 0s
FEAT: Implementado ETL completo para Ruijie e Wifeed
- Adicionado suporte para extração de dados do Ruijie e WiFeed, incluindo autenticação e tratamento de erros.
- Adicionado suporte para watermarking em ambas as fontes para extração incremental.
- Criado script de transformação para mesclagem de MAC addresses.
- Implementado Backfill para WiFeed, permitindo extração histórica com controle de taxa.
- Adicionado script de depuração para testes de transformação do WiFeed.
- Desenvolvido scripts de implantação e configurações do Docker para setup de produção.
- Criado script de inicialização do schema do PostgreSQL em infra/init.sql.
- Adicionado teste automatizado para lógica de transformação e carregamento em test_transform_load.py.
- Atualizado documentation para implantação e setup de produção.
2026-04-22 16:55:44 -03:00

84 lines
2.3 KiB
YAML

name: Deploy WiFi-ETL Prod
on:
push:
branches:
- main
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Clone/Update código
run: |
mkdir -p /opt/wifi-etl
cd /opt/wifi-etl
if [ -d .git ]; then
echo "Atualizando código..."
git pull origin main
else
echo "Clonando projeto..."
git clone https://seu-gitea.com/seu-usuario/wifi-etl.git /opt/wifi-etl
cd /opt/wifi-etl
fi
echo "✓ Código atualizado"
- name: Copiar .env
run: |
cp /home/desenvolvimento/.envs/wifi_etl/.env /opt/wifi-etl/.env
echo "✓ .env copiado"
- name: Build e deploy container
run: |
cd /opt/wifi-etl
docker compose -f infra/docker-compose.yml up -d --build
echo "✓ Container iniciado"
- name: Aguardar inicialização
run: sleep 5
- name: Validar saúde - CRON
run: |
echo "--- Verificando CRON ---"
docker exec wifi_etl_worker ps aux | grep cron || echo "⚠ Cron pode não estar rodando"
- name: Validar saúde - Database
run: |
echo "--- Verificando conexão com banco ---"
docker exec wifi_etl_worker python3 << 'PYEOF'
import psycopg2
import os
import sys
try:
conn = psycopg2.connect(
host=os.getenv('DB_HOST'),
port=int(os.getenv('DB_PORT', '5432')),
dbname=os.getenv('DB_NAME'),
user=os.getenv('DB_USER'),
password=os.getenv('DB_PASSWORD'),
connect_timeout=5
)
cur = conn.cursor()
cur.execute("SELECT version();")
version = cur.fetchone()[0]
print(f"✓ Banco de dados conectado")
print(f" {version[:60]}")
cur.close()
conn.close()
except Exception as e:
print(f"✗ Erro de conexão: {e}")
sys.exit(1)
PYEOF
- name: Verificar logs iniciais
if: always()
run: |
echo "--- Últimos logs do container ---"
docker logs --tail 20 wifi_etl_worker || true