1.4 KiB
1.4 KiB
02 — Fluxo GitOps (do push ao container no ar)
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: retorna429se já houver build rodando (sem deploys concorrentes). - Anti-loop de CI: commits cuja mensagem casa com
^chore\(deploy\): bump versionsão ignorados — senão ogit pushdo bump dispararia um novo deploy infinitamente. - Status no Gitea:
pending→success/failure, aparecendo o ✔/✘ ao lado do commit.