Files
VPS 4 Builder 4ac199da97
continuous-integration/webhook Client .exe publicado em produção (VPS4)
fix(deploy): NODE_ENV=development npm install --include=dev para incluir electron-builder (devDependency)
2026-05-31 15:44:07 +02:00

70 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# ─── deploy-client.sh (RX ScoreOdonto - Desktop Client) ──────────────────────
# Cross-compile do Electron na VPS 4 (Linux) gerando .exe para Windows
# e distribui os binários de atualização para a VPS 1 (Produção).
# ──────────────────────────────────────────────────────────────────────────────
set -e
CLIENT_PATH="/home/deploy/stack/rx.scoreodonto.com-client"
PROD_VPS="10.99.0.1"
PROD_USER="deploy"
UPDATES_PATH="/home/deploy/stack/rx.scoreodonto.com/dental-server/updates"
LOG_FILE="/home/deploy/stack/webhook-listener/deploy.log"
LOG_TAG="[rx.scoreodonto.com-client]"
log() {
echo "[$(date -u +'%Y-%m-%dT%H:%M:%SZ')] ${LOG_TAG} $1" | tee -a "$LOG_FILE"
}
log "🚀 Iniciando build do client desktop..."
# Garantir que todos os comandos rodam no diretório do projeto
cd "$CLIENT_PATH"
# 1. Atualizar repositório local (puxar última versão)
log "📦 Atualizando repositório local..."
git fetch origin main
git reset --hard origin/main
# 2. Instalar dependências
log "📦 Instalando dependências (npm install --include=dev)..."
NODE_ENV=development npm install --include=dev
# 3. Build cross-platform (Linux → Windows .exe)
log "⚙️ Buildando .exe para Windows via electron-builder (cross-compile)..."
npx electron-builder --win --x64 --publish never
# 4. Verificar se o build gerou os artefatos
if [ ! -d "$CLIENT_PATH/dist" ]; then
log "❌ ERRO: Pasta dist/ não encontrada após o build!"
exit 1
fi
EXE_COUNT=$(find "$CLIENT_PATH/dist" -name "*.exe" | wc -l)
YML_COUNT=$(find "$CLIENT_PATH/dist" -name "latest.yml" | wc -l)
if [ "$EXE_COUNT" -eq 0 ] || [ "$YML_COUNT" -eq 0 ]; then
log "❌ ERRO: Artefatos incompletos (exe: $EXE_COUNT, yml: $YML_COUNT)"
exit 1
fi
log "✅ Build concluído: $EXE_COUNT .exe(s), $YML_COUNT latest.yml"
# 5. Garantir que a pasta de updates existe na VPS 1
ssh -o BatchMode=yes -o StrictHostKeyChecking=no ${PROD_USER}@${PROD_VPS} \
"mkdir -p ${UPDATES_PATH}"
# 6. Transferir binários para VPS 1
log "🚚 Transferindo binários para VPS 1 (${UPDATES_PATH})..."
rsync -avz --delete \
"$CLIENT_PATH/dist/"*.exe \
"$CLIENT_PATH/dist/"*.yml \
"$CLIENT_PATH/dist/"*.blockmap \
${PROD_USER}@${PROD_VPS}:${UPDATES_PATH}/ 2>/dev/null || \
rsync -avz \
"$CLIENT_PATH/dist/"*.exe \
"$CLIENT_PATH/dist/"*.yml \
${PROD_USER}@${PROD_VPS}:${UPDATES_PATH}/
log "✅ Build e distribuição do client concluídos com sucesso!"