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

71 lines
3.1 KiB
Bash
Executable File

#!/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!"