#!/bin/bash set -e # Script di deployment automatico per VigilanzaTurni # Eseguito da GitLab CI/CD Runner APP_DIR="/var/www/vigilanza-turni" APP_NAME="vigilanza-turni" echo "๐Ÿš€ Deployment VigilanzaTurni - $(date)" # Vai alla directory applicazione cd $APP_DIR # Pull ultime modifiche (giร  fatto da GitLab Runner) echo "๐Ÿ“ฆ Repository aggiornato" # Installa TUTTE le dipendenze (serve per build e migrations) echo "๐Ÿ“ฅ Installazione dipendenze (include devDependencies)..." npm ci # Build frontend echo "๐Ÿ—๏ธ Build frontend Vite..." export NODE_ENV=production npm run build # Database migrations (serve Drizzle che รจ devDependency) echo "๐Ÿ—„๏ธ Verifica database schema..." npm run db:push || true # Rimuovi devDependencies dopo build e migrations echo "๐Ÿงน Pulizia devDependencies (mantiene solo production)..." npm prune --production # Restart applicazione con PM2 echo "๐Ÿ”„ Restart applicazione..." if pm2 show $APP_NAME > /dev/null 2>&1; then pm2 reload $APP_NAME --update-env else pm2 start npm --name $APP_NAME -- start pm2 save fi # Health check echo "๐Ÿฅ Health check..." sleep 5 if pm2 show $APP_NAME | grep -q "online"; then echo "โœ… Deployment completato con successo!" pm2 logs $APP_NAME --lines 20 --nostream else echo "โŒ Errore: applicazione non online" pm2 logs $APP_NAME --lines 50 --nostream exit 1 fi echo "๐Ÿ“Š Status PM2:" pm2 status