Files
clube67.com/deploy-prod-builder.sh
T

56 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# ─── deploy-prod-builder.sh ──────────────────────────────────────────────────
# Script sênior de automação de build e despacho (GitOps) de VPS 4 -> VPS 1.
# ─────────────────────────────────────────────────────────────────────────────
set -e
LOCK_FILE="/tmp/deploy-prod-clube67.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')] $1" | tee -a "$LOG_FILE"
}
log "🚀 Iniciando ciclo de build e deploy automático para Clube67..."
# 1. Atualizar repositório Git local na VPS 4
log "📦 Sincronizando repositório Git local na VPS 4..."
cd /home/deploy/stack/clube67
git fetch origin main
git reset --hard origin/main
# 2. Compilar o Backend
log "⚙️ Instalando dependências e compilando o Backend..."
cd /home/deploy/stack/clube67/backend
npm install
npm run build
# 3. Sincronizar arquivos compilados e arquivos de configuração com a VPS 1 (Produção) via Rsync VPN
log "🚚 Despachando Backend compilado e dependências para a VPS 1 (Produção)..."
rsync -avz --delete --exclude '.env' /home/deploy/stack/clube67/backend/dist/ deploy@10.99.0.1:/home/deploy/stack/clube67/backend/dist/
rsync -avz --delete /home/deploy/stack/clube67/backend/node_modules/ deploy@10.99.0.1:/home/deploy/stack/clube67/backend/node_modules/
rsync -avz /home/deploy/stack/clube67/backend/package.json /home/deploy/stack/clube67/backend/package-lock.json deploy@10.99.0.1:/home/deploy/stack/clube67/backend/
log "🚚 Despachando Frontend estático para a VPS 1 (Produção)..."
rsync -avz --delete /home/deploy/stack/clube67/frontend/ deploy@10.99.0.1:/home/deploy/stack/clube67/frontend/
log "🚚 Despachando Nginx e Docker Compose de produção para a VPS 1..."
rsync -avz /home/deploy/stack/clube67/nginx/default.conf deploy@10.99.0.1:/home/deploy/stack/clube67/nginx/default.conf
rsync -avz /home/deploy/stack/clube67/docker-compose.yml deploy@10.99.0.1:/home/deploy/stack/clube67/docker-compose.yml
# 4. Parar containers antigos obsoletos e iniciar os novos na VPS 1
log "🔄 Reiniciando containers e aplicando novas definições na VPS 1..."
ssh -o BatchMode=yes deploy@10.99.0.1 "cd /home/deploy/stack/clube67 && DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose down && DOCKER_HOST=unix:///run/user/1000/docker.sock docker compose up -d"
log "✅ Deploy do Clube67 concluído com absoluto sucesso!"