Files

33 lines
1.4 KiB
Markdown

# 02 — Fluxo GitOps (do push ao container no ar)
```mermaid
sequenceDiagram
participant Dev as Dev (VPS4)
participant Gitea as Gitea (VPS3)
participant Listener as Listener (VPS4:porta)
participant Build as deploy-*.sh (VPS4)
participant Prod as Docker (VPS1)
Dev->>Gitea: git push origin main
Gitea->>Listener: POST /webhook?token=...
Listener->>Listener: valida token + trava de concorrência
Listener->>Gitea: status = pending
Listener->>Build: executa deploy-*.sh (background)
Build->>Gitea: git fetch & reset --hard
Build->>Build: build / version bump
Build->>Prod: rsync (artefato ou fonte)
Build->>Prod: ssh docker compose up -d [--build]
Build->>Gitea: git push (chore(deploy): bump version)
Note over Listener: commit de bump é IGNORADO (anti-loop)
Build-->>Listener: exit 0
Listener->>Gitea: status = success
```
## Pontos importantes do listener
- **Resposta 202 imediata**: evita timeout do webhook do Gitea; o build roda em background.
- **Trava `isBuilding`**: retorna `429` se já houver build rodando (sem deploys concorrentes).
- **Anti-loop de CI**: commits cuja mensagem casa com `^chore\(deploy\): bump version` são
**ignorados** — senão o `git push` do bump dispararia um novo deploy infinitamente.
- **Status no Gitea**: `pending``success`/`failure`, aparecendo o ✔/✘ ao lado do commit.