DOCS: Atualiza README e crontab com instruções e variáveis de ambiente
Some checks failed
Deploy WiFi-ETL Prod / deploy (push) Failing after 0s

This commit is contained in:
Rafael Alves Lopes 2026-04-23 09:28:13 -03:00
parent 8788db407d
commit f277c318b4
2 changed files with 41 additions and 28 deletions

View File

@ -1,8 +1,5 @@
# 📡 WiFi ETL Pipeline # 📡 WiFi ETL Pipeline
🚧 **Em construção** 🚧
Este projeto está em desenvolvimento. Este primeiro commit contém a estrutura base do pipeline ETL.
--- ---
## 🧠 Visão Geral ## 🧠 Visão Geral
@ -107,9 +104,7 @@ Crie um `.env` baseado no exemplo:
```bash ```bash
cp .env.example .env cp .env.example .env
``` ```
Preencha com suas credenciais (NUNCA commitar o `.env`)
Preencha com suas credenciais (WiFeed já inclusa no `.env`):
```env ```env
# PostgreSQL # PostgreSQL
DB_HOST=localhost DB_HOST=localhost
@ -121,14 +116,14 @@ DB_PASSWORD=sua_senha
# Ruijie (AP) # Ruijie (AP)
RUIJIE_BASE_URL=https://cloud-eu.ruijienetworks.com RUIJIE_BASE_URL=https://cloud-eu.ruijienetworks.com
RUIJIE_APPID=seu_appid RUIJIE_APPID=seu_appid
RUIJIE_SECRET=seu_secret RUIJIE_SECRET=**********
RUIJIE_ACCESS_TOKEN= RUIJIE_ACCESS_TOKEN=**********************************
RUIJIE_GROUP_ID=9290679 RUIJIE_GROUP_ID=9290679
# WiFeed (autenticação usuários) # WiFeed (autenticação usuários)
WIFEED_BASE_URL=https://api.wifeed.com.br WIFEED_BASE_URL=https://api.wifeed.com.br
WIFEED_CLIENT_ID=60e40ee2-f39f-4556-8a22-840a2e3fa686 WIFEED_CLIENT_ID=**********-*****-****-****-************
WIFEED_CLIENT_SECRET=dRpd6FB2hjbyvcA WIFEED_CLIENT_SECRET=****************
LOG_LEVEL=INFO LOG_LEVEL=INFO
``` ```
@ -156,11 +151,11 @@ docker run -d --name wifi-db \
docker exec -i wifi-db psql -U postgres -d wifi_etl < infra/init.sql docker exec -i wifi-db psql -U postgres -d wifi_etl < infra/init.sql
# e) Rode o ETL (uma vez) # e) Rode o ETL (uma vez)
python app/main.py python -m app.main
# f) (Opcional) Agende localmente # f) (Opcional) Agende localmente
# crontab -e # crontab -e
# */5 * * * * cd /caminho/wifi-etl && /usr/bin/python3 main.py >> /var/log/wifi-etl.log 2>&1 # */5 * * * * cd /caminho/wifi-etl && PYTHONPATH=. python -m app.main >> /var/log/wifi-etl.log 2>&1
``` ```
--- ---
@ -180,26 +175,27 @@ docker-compose exec etl python /app/main.py
--- ---
### 5. **Deploy Automático (CI/CD)** #### 5. Deploy Automático (CI/CD)
Ao fazer `git push` na branch `main`, o workflow **`.gitea/workflows/deploy.yml`** dispara automaticamente: Ao fazer `git push` na branch `main`, o workflow executa no runner da VM de produção:
1. **Builda** imagem Docker (`wifi-etl:<commit-sha>`) 1. Atualiza o código em `/opt/wifi-etl`
2. **Salva** como artifact (backup) 2. Copia o `.env` seguro
3. **Deploy via SSH** no servidor de produção configurado 3. Rebuilda o container (`docker-compose`)
4. Sobe o serviço automaticamente
#### Configurar Secrets no Gitea > ⚠️ O deploy roda diretamente na VM (self-hosted runner)
Acesse **Settings → Secrets** do repositório e adicione:
| Nome | Descrição | ### ⏱️ Agendamento (Cron)
|---|---|
| `SSH_PRIVATE_KEY` | Chave privada SSH para acesso ao servidor | O ETL é executado a cada 5 minutos via cron dentro do container:
| `SSH_HOST` | IP/hostname do servidor prod (ex: `etl.prod.example.com`) |
| `SSH_USER` | Usuário SSH (ex: `deploy`) | ```bash
| `REGISTRY` | (opcional) Registry Docker (ex: `ghcr.io/seu-user`) | */5 * * * * PYTHONPATH=/app /usr/local/bin/python -m app.main >> /var/log/wifi-etl.log 2>&1
| `REGISTRY_USERNAME` | (opcional) Username do registry |
| `REGISTRY_PASSWORD` | (opcional) Token/Password do registry | ```
⚠️ Importante: o PYTHONPATH=/app é necessário para o cron encontrar os módulos Python.
#### Variáveis de Ambiente no Servidor #### Variáveis de Ambiente no Servidor
@ -216,6 +212,7 @@ mkdir -p /opt/wifi-etl
--- ---
### 6. Consultas Úteis ### 6. Consultas Úteis
```sql ```sql
@ -243,6 +240,21 @@ WHERE online_time::date = CURRENT_DATE - 1;
--- ---
## 📈 Observabilidade
Logs do ETL podem ser consultados via:
```bash
docker exec wifi_etl_worker tail -f /var/log/wifi-etl.log
```
Para ver status do container:
``` bash
docker ps
```
## 📊 Modelo de Dados ## 📊 Modelo de Dados
``` ```
@ -302,6 +314,7 @@ watermarks
- [x] Docker + cron - [x] Docker + cron
- [x] CI/CD (push → deploy) - [x] CI/CD (push → deploy)
- [ ] Retry com backoff nas APIs - [ ] Retry com backoff nas APIs
- [ ] Automação de envio de erros para equipe
- [ ] Testes unitários (pytest) - [ ] Testes unitários (pytest)
--- ---

View File

@ -3,4 +3,4 @@
# Fuso horário: UTC (ajustar se necessário) # Fuso horário: UTC (ajustar se necessário)
# A cada 5 minutos: executa o ETL # A cada 5 minutos: executa o ETL
*/5 * * * * /usr/local/bin/python -m app.main >> /var/log/wifi-etl.log 2>&1 */5 * * * * PYTHONPATH=/app /usr/local/bin/python -m app.main >> /var/log/wifi-etl.log 2>&1