Add option to import database backup from Git during deployment
Modify the deployment script to allow importing the latest database backup from the Git repository when the 'db' argument is provided. This includes handling backup decompression and database restoration. Replit-Commit-Author: Agent Replit-Commit-Session-Id: e5565357-90e1-419f-b9a8-6ee8394636df Replit-Commit-Checkpoint-Type: intermediate_checkpoint
This commit is contained in:
parent
ab7b3c7f90
commit
204717cd9d
@ -2,11 +2,21 @@
|
||||
set -e
|
||||
|
||||
# Script di deployment automatico per VigilanzaTurni
|
||||
# Uso: bash deploy/deploy.sh
|
||||
# Uso:
|
||||
# bash deploy/deploy.sh → deployment normale
|
||||
# bash deploy/deploy.sh db → deployment + importa backup database da Git
|
||||
|
||||
APP_DIR="/var/www/vigilanza-turni"
|
||||
APP_NAME="vigilanza-turni"
|
||||
BACKUP_DIR="/var/backups/vigilanza-turni"
|
||||
GIT_BACKUP_DIR="$APP_DIR/database-backups"
|
||||
|
||||
# Verifica parametro per import database
|
||||
IMPORT_DB=false
|
||||
if [ "$1" == "db" ]; then
|
||||
IMPORT_DB=true
|
||||
echo "🔄 Modalità: Deployment con import database da Git"
|
||||
fi
|
||||
|
||||
echo "🚀 Deployment VigilanzaTurni - $(date)"
|
||||
|
||||
@ -19,16 +29,52 @@ if [ -d .git ]; then
|
||||
git pull origin main || true
|
||||
fi
|
||||
|
||||
# =================== BACKUP DATABASE ===================
|
||||
echo "💾 Backup database pre-deployment..."
|
||||
mkdir -p $BACKUP_DIR
|
||||
BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql"
|
||||
|
||||
# Load env vars
|
||||
if [ -f .env ]; then
|
||||
source .env
|
||||
fi
|
||||
|
||||
# =================== IMPORT DATABASE DA GIT (se richiesto) ===================
|
||||
if [ "$IMPORT_DB" = true ]; then
|
||||
echo "📦 Import database da backup Git..."
|
||||
|
||||
# Trova l'ultimo backup nella directory git
|
||||
LATEST_GIT_BACKUP=$(ls -t $GIT_BACKUP_DIR/*.sql.gz 2>/dev/null | head -1)
|
||||
|
||||
if [ -f "$LATEST_GIT_BACKUP" ]; then
|
||||
echo "📥 Trovato backup: $LATEST_GIT_BACKUP"
|
||||
|
||||
# Controlla che le variabili siano definite
|
||||
if [ -z "$PGDATABASE" ] || [ -z "$PGUSER" ]; then
|
||||
echo "❌ Variabili DB non trovate nel .env, impossibile importare"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Chiedi conferma (opzionale - rimuovi se vuoi import automatico)
|
||||
echo "⚠️ ATTENZIONE: Questo sovrascriverà il database corrente!"
|
||||
echo "Backup da importare: $(basename $LATEST_GIT_BACKUP)"
|
||||
read -p "Continuare? (s/n): " -n 1 -r
|
||||
echo
|
||||
|
||||
if [[ $REPLY =~ ^[Ss]$ ]]; then
|
||||
# Decomprimi e importa
|
||||
echo "🔄 Importazione database in corso..."
|
||||
gunzip -c "$LATEST_GIT_BACKUP" | PGPASSWORD=$PGPASSWORD psql -h ${PGHOST:-localhost} -U $PGUSER --dbname=$PGDATABASE
|
||||
echo "✅ Database importato con successo da Git!"
|
||||
else
|
||||
echo "❌ Import annullato dall'utente"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "❌ Nessun backup trovato in $GIT_BACKUP_DIR"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# =================== BACKUP DATABASE NORMALE ===================
|
||||
echo "💾 Backup database pre-deployment..."
|
||||
mkdir -p $BACKUP_DIR
|
||||
BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql"
|
||||
|
||||
# Esegui backup PostgreSQL
|
||||
if command -v pg_dump &> /dev/null; then
|
||||
# Controlla che le variabili siano definite
|
||||
@ -49,6 +95,7 @@ if command -v pg_dump &> /dev/null; then
|
||||
else
|
||||
echo "⚠️ pg_dump non trovato, skip backup"
|
||||
fi
|
||||
fi
|
||||
|
||||
# =================== BUILD & DEPLOY ===================
|
||||
# Installa TUTTE le dipendenze (serve per build e migrations)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user