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.
4.4 KiB
4.4 KiB
Deploy WiFi-ETL em Produção
Arquitetura
- Aplicação:
/opt/wifi-etl(clone do repositório) - Config:
.envcopiado de/home/desenvolvimento/.envs/wifi_etl/.env - Container: Rodando via
docker compose(cron + ETL) - Runner: Self-hosted na VM (pull automático na mudança de código)
Setup Inicial (uma única vez na VM)
1. Configurar Self-Hosted Runner no Gitea
Na VM de produção:
# Criar diretório para o runner
mkdir -p ~/gitea-runner
cd ~/gitea-runner
# Baixar runner Gitea (Linux x86_64)
# Substitua URL pela sua instância Gitea
wget https://seu-gitea.com/api/v1/repos/seu-usuario/wifi-etl/actions/runners/download/linux_x86_64
# Ou use curl:
# curl -LO https://seu-gitea.com/api/v1/repos/seu-usuario/wifi-etl/actions/runners/download/linux_x86_64
# Descompactar
unzip linux_x86_64
chmod +x act_runner
# Gerar token no Gitea:
# 1. Vá para: Repositório → Settings → Actions → Runners
# 2. Clique "Create Runner"
# 3. Copie o Token gerado
# Registrar runner (substitua o token)
./act_runner register \
--instance https://seu-gitea.com \
--token seu_token_aqui
# Rodar em background
nohup ./act_runner daemon > runner.log 2>&1 &
# OU criar systemd service (recomendado):
sudo tee /etc/systemd/system/gitea-runner.service > /dev/null << 'EOF'
[Unit]
Description=Gitea Runner
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/gitea-runner
ExecStart=/home/ubuntu/gitea-runner/act_runner daemon
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable gitea-runner
sudo systemctl start gitea-runner
sudo systemctl status gitea-runner
2. Preparar diretório da aplicação
# Criar diretório
mkdir -p /opt/wifi-etl
# Primeiro clone manual (depois é automático)
cd /opt/wifi-etl
git clone https://seu-gitea.com/seu-usuario/wifi-etl.git .
Fluxo de Deploy Automático
1. git push main (local → Gitea)
↓
2. Gitea dispara workflow (push event)
↓
3. Runner na VM executa
↓
4. git pull /opt/wifi-etl (atualiza código)
↓
5. Copiar .env
↓
6. docker compose up -d --build
↓
7. Validar CRON status
↓
8. Testar conexão BD
↓
DONE! ✓
Deploy Manual (se necessário)
# Na VM
cd /opt/wifi-etl
git pull origin main
cp /home/desenvolvimento/.envs/wifi_etl/.env ./.env
docker compose -f infra/docker-compose.yml up -d --build
# Aguardar inicialização
sleep 5
docker logs -f wifi_etl_worker
Verificações Pós-Deploy
# Status do container
docker ps -a | grep wifi_etl
# Logs em tempo real
docker logs -f wifi_etl_worker
# Validar cron rodando
docker exec wifi_etl_worker ps aux | grep cron
# Testar banco de dados
docker exec wifi_etl_worker python3 << 'EOF'
import psycopg2, os
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')
)
print("✓ Database conectado")
conn.close()
except Exception as e:
print(f"✗ Erro: {e}")
EOF
# Ver logs de ETL
docker exec wifi_etl_worker tail -50 /var/log/wifi-etl.log
Troubleshooting
Container não inicia
docker logs wifi_etl_worker
docker exec wifi_etl_worker env | grep DB_
Cron não funciona
docker exec -it wifi_etl_worker bash
cat /etc/cron.d/wifi-etl # Verificar arquivo
tail -20 /var/log/syslog # Verificar logs
Banco não conecta
# Verificar variáveis de ambiente
docker exec wifi_etl_worker env | grep DB_
# Testar conexão
docker exec wifi_etl_worker python3 -m \
psycopg2 "postgresql://user:pass@host:port/db"
Runner não pegando mudanças
cd ~/gitea-runner
./act_runner status
# Ver logs
tail -50 runner.log
# Restart
pkill act_runner
nohup ./act_runner daemon > runner.log 2>&1 &
Revertir Deploy
# Parar container
docker-compose -f /opt/wifi-etl/infra/docker-compose.yml down
# Remover para forçar rebuild
docker rmi wifi-etl:latest
# Ou voltar para commit anterior
cd /opt/wifi-etl
git reset --hard HEAD~1
# Depois fazer deploy novamente
ETL Schedule
Roda a cada 5 minutos em produção:
*/5 * * * * /usr/local/bin/python /app/main.py
Logs: /var/log/wifi-etl.log (dentro do container)
Last updated: 2026-04-22