Files

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: 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: pendingsuccess/failure, aparecendo o ✔/✘ ao lado do commit.