63 lines
1.7 KiB
Markdown
63 lines
1.7 KiB
Markdown
# CI/CD Pipeline — SaaS Imobiliária
|
|
|
|
## Fluxo
|
|
|
|
```
|
|
push main → Build images → Push registry → Deploy Portainer → Health checks HTTPS
|
|
```
|
|
|
|
## Configurar no Forgejo (Settings → Secrets & Variables)
|
|
|
|
### Secrets (valores sensíveis)
|
|
| Secret | Descrição |
|
|
|--------|-----------|
|
|
| `REGISTRY_USER` | Usuário do registry (ex: `gitadmin`) |
|
|
| `REGISTRY_PASSWORD` | Senha ou token do registry |
|
|
| `PORTAINER_WEBHOOK_URL` | URL do webhook do stack no Portainer |
|
|
| `POSTGRES_DB` | Nome do banco de dados |
|
|
| `POSTGRES_USER` | Usuário do PostgreSQL |
|
|
| `POSTGRES_PASSWORD` | Senha do PostgreSQL |
|
|
| `SECRET_KEY` | Flask SECRET_KEY |
|
|
| `JWT_SECRET_KEY` | Chave JWT (mín. 32 chars) |
|
|
|
|
### Variables (valores não-sensíveis)
|
|
| Variable | Exemplo |
|
|
|----------|---------|
|
|
| `REGISTRY` | `git.matheussouza.com.br/gitadmin` |
|
|
| `DOMAIN` | `imobiliaria.matheussouza.com.br` |
|
|
|
|
## Configurar no Portainer
|
|
|
|
1. Crie um **Stack** com o arquivo `docker-compose.prod.yml`
|
|
2. Ative o **webhook** do stack (Stack → Webhooks → Enable)
|
|
3. Copie a URL do webhook → cole em `PORTAINER_WEBHOOK_URL`
|
|
4. Certifique-se que a rede `traefik-public` existe:
|
|
```
|
|
docker network create traefik-public
|
|
```
|
|
|
|
## Traefik — pré-requisitos
|
|
|
|
O Traefik deve estar rodando com:
|
|
- Entrypoint `web` (porta 80)
|
|
- Entrypoint `websecure` (porta 443)
|
|
- CertResolver `letsencrypt` configurado
|
|
- Conectado à rede `traefik-public`
|
|
|
|
Exemplo mínimo de configuração do Traefik:
|
|
```yaml
|
|
# traefik.yml
|
|
entryPoints:
|
|
web:
|
|
address: ":80"
|
|
websecure:
|
|
address: ":443"
|
|
|
|
certificatesResolvers:
|
|
letsencrypt:
|
|
acme:
|
|
email: seu@email.com
|
|
storage: /letsencrypt/acme.json
|
|
httpChallenge:
|
|
entryPoint: web
|
|
```
|