Some checks failed
Deploy WiFi-ETL Prod / deploy (push) Failing after 0s
- 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.
84 lines
2.3 KiB
YAML
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
|
|
|
|
|