c0ca88c028
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
100 lines
4.9 KiB
Markdown
100 lines
4.9 KiB
Markdown
> ⚠️ EM DESUSO desde 2026-06-17 — consolidado em /home/deploy/stack/documentos-unicos/ (ver LEIA-PRIMEIRO.md). Mantido só como histórico; NÃO usar como referência.
|
|
|
|
---
|
|
|
|
# 🚀 Fluxo de Deploy Multi-VPS (VPS 1, VPS 3 e VPS 4)
|
|
|
|
Este guia descreve detalhadamente o fluxo GitOps e despacho de arquivos compilados entre os servidores do ecossistema NewWhats.
|
|
|
|
---
|
|
|
|
## 🗺️ Mapa de Papéis dos Servidores
|
|
|
|
```
|
|
[ VPS 4: Builder ] ───(git push)───► [ VPS 3: Git/DB ]
|
|
│ ▲
|
|
│ │
|
|
(rsync compiles) (DB Connections)
|
|
│ │
|
|
▼ │
|
|
[ VPS 1: Produção ] ───────────────────────────┘
|
|
```
|
|
|
|
| Servidor | IP VPN | Função Principal | Fluxo de Código |
|
|
|---|---|---|---|
|
|
| **VPS 1 (App Server)** | `10.99.0.1` | Execução em Produção | Recebe os arquivos compilados da VPS 4 |
|
|
| **VPS 3 (Data Server)** | `10.99.0.3` | Banco PostgreSQL & Gitea | Centraliza o Git e o banco de dados |
|
|
| **VPS 4 (Build Server)**| `10.99.0.4` | Desenvolvimento & Compilação | Compila a plataforma e despacha via Rsync |
|
|
|
|
---
|
|
|
|
## 🔄 Fluxo de Deploy Passo a Passo
|
|
|
|
O ciclo de deploy adota o modelo **Builder-to-Host** para garantir que servidores de execução de produção (VPS 1) não consumam recursos excessivos de CPU com compilações pesadas de Webpack/Next.js e TypeScript.
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant Dev as Desenvolvedor (VPS 4)
|
|
participant Gitea as Gitea (VPS 3)
|
|
participant Builder as Build Process (VPS 4)
|
|
participant Prod as Produção Docker (VPS 1)
|
|
|
|
Dev->>Gitea: git push origin main
|
|
Dev->>Builder: Executa deploy-prod-builder.sh
|
|
Builder->>Gitea: git fetch & reset --hard
|
|
Builder->>Builder: Incrementa versão (update-version.js)
|
|
Builder->>Builder: Compila Backend, Plugins & Frontend
|
|
Builder->>Prod: rsync /dist e /node_modules
|
|
Builder->>Prod: ssh restart containers
|
|
Builder->>Gitea: git push (version bump)
|
|
```
|
|
|
|
---
|
|
|
|
## 🖥️ Detalhamento por Máquina
|
|
|
|
### 1️⃣ VPS 4 — O Motor de Compilação (Build / Builder)
|
|
Todas as modificações de código e atualizações são criadas e validadas nesta máquina.
|
|
1. O desenvolvedor realiza as alterações no código local.
|
|
2. Faz o commit e envia para a VPS 3:
|
|
```bash
|
|
git add .
|
|
git commit -m "feat: minha nova funcionalidade"
|
|
git push origin main
|
|
```
|
|
3. Executa o script centralizador de deploy:
|
|
```bash
|
|
bash /home/deploy/stack/clube67/deploy-prod-builder.sh
|
|
```
|
|
* *O script limpa e reseta a pasta local para bater com a origin/main.*
|
|
* *Roda `update-version.js` para incrementar o build (ex: `v1.0.9 (build #9)`).*
|
|
* *Compila o backend, gera tipos Prisma, compila plugins e roda `next build`.*
|
|
|
|
4. **Sincronizar o incremento de versão no Gitea (Obrigatório):**
|
|
Após o deploy com sucesso, os arquivos de versão estarão alterados localmente. É vital comitá-los para não apagar o contador de deploys no Gitea na próxima execução:
|
|
```bash
|
|
git add deploys.json version.json frontend/public/deploys.json frontend/public/version.json
|
|
git commit -m "chore(deploy): bump version"
|
|
git push origin main
|
|
```
|
|
|
|
### 2️⃣ VPS 3 — O Orquestrador e Repositório (Git & Banco de Dados)
|
|
A VPS 3 é o coração dos dados do ecossistema. Ela roda o banco PostgreSQL diretamente no host e serve o Gitea.
|
|
* **Recebimento de Alterações (Push):** Quando a VPS 4 faz `git push`, a VPS 3 valida a autenticação de chaves SSH ou JWT e atualiza o branch `main`.
|
|
* **Disponibilização (Pull):** Durante o deploy automático, a VPS 4 executa `git fetch` e `git reset` apontando de volta para a VPS 3 para garantir consistência.
|
|
|
|
### 3️⃣ VPS 1 — O Servidor de Produção (App Server)
|
|
A VPS 1 roda os containers Docker `newwhats-backend-prod` e `newwhats-frontend-prod`.
|
|
* **Sem Compilação Local:** Ela nunca roda `npm run build` ou instala dependências de desenvolvimento.
|
|
* **Recebimento de Binários:** O script da VPS 4 envia apenas as pastas `/dist`, `/node_modules`, `package.json` e os arquivos do frontend prontos (`.next/`, `/public/`) via **rsync** de alta velocidade.
|
|
* **Reinício de Containers:** Após os arquivos serem transferidos para a pasta local da VPS 1, a VPS 4 faz um comando SSH seguro que dispara:
|
|
```bash
|
|
docker compose restart newwhats-backend-prod newwhats-frontend-prod
|
|
```
|
|
|
|
---
|
|
|
|
## 🚦 Boas Práticas e Resolução de Conflitos
|
|
* **Nunca altere código diretamente na VPS 1:** Qualquer edição em produção será apagada no próximo deploy, pois o `rsync --delete` substitui todos os arquivos pelos compilados na VPS 4.
|
|
* **Commite antes de Buildar:** Lembre-se sempre de subir suas alterações para o Gitea (`git push`) antes de rodar o deploy-prod-builder.sh, pois o script reseta a árvore de diretórios local para bater com o Git remoto.
|