sass-imobiliaria/.forgejo/workflows/README.md
MatheusAlves96 b0eb12c17d
Some checks are pending
CI/CD → Deploy via SSH / Build & Push Docker Images (push) Waiting to run
CI/CD → Deploy via SSH / Deploy via SSH (push) Blocked by required conditions
CI/CD → Deploy via SSH / Validate HTTPS & Endpoints (push) Blocked by required conditions
ci: replace portainer webhook with ssh deploy (portainer free)
2026-04-21 00:09:30 -03:00

74 lines
1.9 KiB
Markdown

# CI/CD Pipeline — SaaS Imobiliária
## Fluxo
```
push main → Build images → Push registry → SSH no servidor → docker compose up → Health checks HTTPS
```
## Configurar no Forgejo (Settings → Secrets & Variables)
### Secrets
| Secret | Descrição |
|--------|-----------|
| `REGISTRY_USER` | Usuário do registry (ex: `gitadmin`) |
| `REGISTRY_PASSWORD` | Senha ou token do registry |
| `SSH_PRIVATE_KEY` | Chave privada SSH para acessar o servidor |
| `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
| Variable | Exemplo |
|----------|---------|
| `REGISTRY` | `git.matheussouza.com.br/gitadmin` |
| `DOMAIN` | `imobiliaria.matheussouza.com.br` |
| `SSH_HOST` | IP ou hostname do servidor |
| `SSH_USER` | Usuário SSH (ex: `root` ou `deploy`) |
| `SSH_PORT` | Porta SSH (padrão: `22`) |
## Gerar chave SSH para o deploy
No seu computador:
```bash
ssh-keygen -t ed25519 -C "forgejo-deploy" -f ~/.ssh/forgejo_deploy -N ""
```
- Conteúdo de `~/.ssh/forgejo_deploy` → cole em `SSH_PRIVATE_KEY` (secret)
- Conteúdo de `~/.ssh/forgejo_deploy.pub` → adicione em `~/.ssh/authorized_keys` no servidor
## Pré-requisitos no servidor
1. Docker + Docker Compose instalados
2. Rede Traefik criada:
```bash
docker network create traefik-public
```
3. Traefik rodando com entrypoints `web` (80), `websecure` (443) e certresolver `letsencrypt`
4. Usuário SSH com permissão para rodar `docker`
## Traefik — configuração mínima
```yaml
# /opt/traefik/traefik.yml
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
certificatesResolvers:
letsencrypt:
acme:
email: seu@email.com
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: web
providers:
docker:
exposedByDefault: false
network: traefik-public
```