diff --git a/deploy-prod-builder.sh b/deploy-prod-builder.sh new file mode 100755 index 0000000..4fc5d7b --- /dev/null +++ b/deploy-prod-builder.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# ─── deploy-prod-builder.sh (ScoreOdonto) ──────────────────────────────────── +# Script sênior de automação de build e despacho (GitOps) de VPS 4 -> VPS 1. +# ───────────────────────────────────────────────────────────────────────────── +set -e + +LOCK_FILE="/tmp/deploy-prod-scoreodonto.lock" +if [ -f "$LOCK_FILE" ]; then + echo "🚨 Deploy já está em andamento! Aguarde..." + exit 1 +fi +touch "$LOCK_FILE" + +# Garante que o lock file será apagado no final do script mesmo se houver erro +trap 'rm -f "$LOCK_FILE"' EXIT + +LOG_FILE="/home/deploy/stack/webhook-listener/deploy.log" + +log() { + echo "[$(date -u +'%Y-%m-%dT%H:%M:%SZ')] [SCOREODONTO] $1" | tee -a "$LOG_FILE" +} + +log "🚀 Iniciando ciclo de build e deploy automático para ScoreOdonto..." + +# 1. Atualizar repositório Git +log "📦 Sincronizando repositório Git local na VPS 4..." +cd /home/deploy/stack/scoreodonto.com +git fetch origin main +git reset --hard origin/main + +# 1.1 Incrementar versão +log "🔢 Incrementando versão..." +node update-version.js + +# 2. Compilar o Backend +log "⚙️ Instalando dependências e preparando o Backend..." +cd /home/deploy/stack/scoreodonto.com/backend +npm install +# Prisma removido — backend usa pg nativo, schema.prisma é legado + +# 2.1 Compilar os Plugins +log "⚙️ Compilando os Plugins da plataforma..." +cd /home/deploy/stack/scoreodonto.com/plugins +if [ -f "/home/deploy/stack/scoreodonto.com/backend/node_modules/.bin/tsc" ]; then + /home/deploy/stack/scoreodonto.com/backend/node_modules/.bin/tsc -p tsconfig.json || true +fi + +# 4. Sincronizar código-fonte com a VPS 1 (Produção) via Rsync VPN +log "🚚 Sincronizando código-fonte para a VPS 1 (Produção)..." +rsync -avz --delete \ + --exclude '.env' \ + --exclude 'node_modules' \ + --exclude 'frontend/node_modules' \ + --exclude 'backend/node_modules' \ + --exclude '.git' \ + /home/deploy/stack/scoreodonto.com/ \ + deploy@10.99.0.1:/home/deploy/stack/scoreodonto.com/ + +# 5. Reconstruir e reiniciar containers na VPS 1 +log "🔄 Reconstruindo e reiniciando containers na VPS 1..." +ssh -o BatchMode=yes deploy@10.99.0.1 "cd /home/deploy/stack/scoreodonto.com && DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose up -d --build" + +# 6. Salvar incremento de versão no Git +log "💾 Comitando o incremento de versão de volta para o repositório central..." +cd /home/deploy/stack/scoreodonto.com +git add frontend/constants.ts +git commit -m "chore(deploy): bump version" +git push origin main + +log "✅ Deploy de ScoreOdonto concluído com absoluto sucesso!"