#!/bin/bash # ─── deploy-prod-builder-subdominio.sh ─────────────────────────────────────── # Script sênior de automação de build e despacho (GitOps) de VPS 4 -> VPS 1. # ───────────────────────────────────────────────────────────────────────────── set -e LOCK_FILE="/tmp/deploy-prod-subdominio.lock" if [ -f "$LOCK_FILE" ]; then echo "🚨 Deploy já está em andamento! Aguarde..." exit 1 fi touch "$LOCK_FILE" 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')] [SUBDOMINIO] $1" | tee -a "$LOG_FILE" } log "🚀 Iniciando ciclo de build e deploy automático para Subdominio..." # 1. Atualizar repositório Git log "📦 Sincronizando repositório Git local na VPS 4..." cd /home/deploy/stack/subdominio.clube67.com git pull origin main # 1.1 Incrementar versão log "🔢 Incrementando versão..." node update-version.js # 2. Compilar o Backend log "⚙️ Instalando dependências do Backend..." cd /home/deploy/stack/subdominio.clube67.com/backend npm install # 3. Compilar o Frontend log "⚙️ Instalando dependências e compilando o Frontend (Vite)..." cd /home/deploy/stack/subdominio.clube67.com/frontend npm install npm run build # 4. Sincronizar arquivos com a VPS 1 (Produção) via Rsync VPN log "🚚 Sincronizando arquivos de infraestrutura (Compose e Nginx) com a VPS 1..." rsync -avz /home/deploy/stack/subdominio.clube67.com/docker-compose.yml deploy@10.99.0.1:/home/deploy/stack/subdominio.clube67.com/ rsync -avz /home/deploy/stack/subdominio.clube67.com/frontend/nginx.conf deploy@10.99.0.1:/home/deploy/stack/subdominio.clube67.com/frontend/nginx.conf rsync -avz --delete /home/deploy/stack/subdominio.clube67.com/nginx/ deploy@10.99.0.1:/home/deploy/stack/subdominio.clube67.com/nginx/ log "🚚 Despachando Backend para a VPS 1 (Produção)..." rsync -avz --delete \ --exclude 'node_modules/.cache' \ /home/deploy/stack/subdominio.clube67.com/backend/ \ deploy@10.99.0.1:/home/deploy/stack/subdominio.clube67.com/backend/ log "🚚 Despachando Frontend (build) para a VPS 1 (Produção)..." rsync -avz --delete \ /home/deploy/stack/subdominio.clube67.com/frontend/dist/ \ deploy@10.99.0.1:/home/deploy/stack/subdominio.clube67.com/frontend/dist/ # 5. Reiniciar os serviços de produção na VPS 1 log "🔄 Reiniciando containers na VPS 1..." ssh -o BatchMode=yes deploy@10.99.0.1 "cd /home/deploy/stack/subdominio.clube67.com && DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose up -d --remove-orphans" # 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/subdominio.clube67.com git add frontend/src/constants.ts git commit -m "chore(deploy): bump version" git push origin main log "✅ Deploy de Subdominio concluído com absoluto sucesso!"