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
Some checks failed
Deploy WiFi-ETL Prod / deploy (push) Failing after 0s
This commit is contained in:
parent
8788db407d
commit
f277c318b4
67
README.md
67
README.md
@ -1,8 +1,5 @@
|
||||
# 📡 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
|
||||
@ -107,9 +104,7 @@ Crie um `.env` baseado no exemplo:
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Preencha com suas credenciais (WiFeed já inclusa no `.env`):
|
||||
|
||||
Preencha com suas credenciais (NUNCA commitar o `.env`)
|
||||
```env
|
||||
# PostgreSQL
|
||||
DB_HOST=localhost
|
||||
@ -121,14 +116,14 @@ DB_PASSWORD=sua_senha
|
||||
# Ruijie (AP)
|
||||
RUIJIE_BASE_URL=https://cloud-eu.ruijienetworks.com
|
||||
RUIJIE_APPID=seu_appid
|
||||
RUIJIE_SECRET=seu_secret
|
||||
RUIJIE_ACCESS_TOKEN=
|
||||
RUIJIE_SECRET=**********
|
||||
RUIJIE_ACCESS_TOKEN=**********************************
|
||||
RUIJIE_GROUP_ID=9290679
|
||||
|
||||
# WiFeed (autenticação usuários)
|
||||
WIFEED_BASE_URL=https://api.wifeed.com.br
|
||||
WIFEED_CLIENT_ID=60e40ee2-f39f-4556-8a22-840a2e3fa686
|
||||
WIFEED_CLIENT_SECRET=dRpd6FB2hjbyvcA
|
||||
WIFEED_CLIENT_ID=**********-*****-****-****-************
|
||||
WIFEED_CLIENT_SECRET=****************
|
||||
|
||||
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
|
||||
|
||||
# e) Rode o ETL (uma vez)
|
||||
python app/main.py
|
||||
python -m app.main
|
||||
|
||||
# f) (Opcional) Agende localmente
|
||||
# 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>`)
|
||||
2. **Salva** como artifact (backup)
|
||||
3. **Deploy via SSH** no servidor de produção configurado
|
||||
1. Atualiza o código em `/opt/wifi-etl`
|
||||
2. Copia o `.env` seguro
|
||||
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 |
|
||||
|---|---|
|
||||
| `SSH_PRIVATE_KEY` | Chave privada SSH para acesso ao servidor |
|
||||
| `SSH_HOST` | IP/hostname do servidor prod (ex: `etl.prod.example.com`) |
|
||||
| `SSH_USER` | Usuário SSH (ex: `deploy`) |
|
||||
| `REGISTRY` | (opcional) Registry Docker (ex: `ghcr.io/seu-user`) |
|
||||
| `REGISTRY_USERNAME` | (opcional) Username do registry |
|
||||
| `REGISTRY_PASSWORD` | (opcional) Token/Password do registry |
|
||||
### ⏱️ Agendamento (Cron)
|
||||
|
||||
O ETL é executado a cada 5 minutos via cron dentro do container:
|
||||
|
||||
```bash
|
||||
*/5 * * * * PYTHONPATH=/app /usr/local/bin/python -m app.main >> /var/log/wifi-etl.log 2>&1
|
||||
|
||||
```
|
||||
⚠️ Importante: o PYTHONPATH=/app é necessário para o cron encontrar os módulos Python.
|
||||
|
||||
#### Variáveis de Ambiente no Servidor
|
||||
|
||||
@ -216,6 +212,7 @@ mkdir -p /opt/wifi-etl
|
||||
|
||||
---
|
||||
|
||||
|
||||
### 6. Consultas Úteis
|
||||
|
||||
```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
|
||||
|
||||
```
|
||||
@ -302,6 +314,7 @@ watermarks
|
||||
- [x] Docker + cron
|
||||
- [x] CI/CD (push → deploy)
|
||||
- [ ] Retry com backoff nas APIs
|
||||
- [ ] Automação de envio de erros para equipe
|
||||
- [ ] Testes unitários (pytest)
|
||||
|
||||
---
|
||||
|
||||
@ -3,4 +3,4 @@
|
||||
# Fuso horário: UTC (ajustar se necessário)
|
||||
|
||||
# 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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user