Improve production deployment script to handle local changes with git stash

This commit is contained in:
Torsten Schulz (local)
2025-10-22 14:47:54 +02:00
parent f0f27de6ed
commit 2e3ebc1d83

View File

@@ -6,23 +6,41 @@
echo "=== Harheimer TC Deployment ===" echo "=== Harheimer TC Deployment ==="
echo "" echo ""
# 1. Git Pull # 1. Handle local changes and Git Pull
echo "1. Pulling latest changes from git..." echo "1. Handling local changes and pulling latest from git..."
# Stash any local changes (including production data)
echo " Stashing local changes..."
git stash push -m "Production deployment stash $(date)"
# Pull latest changes
echo " Pulling latest changes..."
git pull git pull
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "ERROR: Git pull failed!" echo "ERROR: Git pull failed!"
exit 1 exit 1
fi fi
# 2. Backup Production Data # 2. Backup Production Data (from stash)
echo "" echo ""
echo "2. Backing up production data..." echo "2. Backing up production data from stash..."
# Create backup directory
mkdir -p .backup mkdir -p .backup
cp -r server/data .backup/data_backup 2>/dev/null || echo "No server/data to backup"
cp public/data/termine.csv .backup/termine.csv 2>/dev/null || echo "No termine.csv to backup" # Try to restore stashed data temporarily to backup it
cp public/data/mannschaften.csv .backup/mannschaften.csv 2>/dev/null || echo "No mannschaften.csv to backup" echo " Restoring stashed data for backup..."
cp public/data/spielsysteme.csv .backup/spielsysteme.csv 2>/dev/null || echo "No spielsysteme.csv to backup" git stash show -p | git apply --index 2>/dev/null || echo " No stashed data to restore"
cp public/data/vereinsmeisterschaften.csv .backup/vereinsmeisterschaften.csv 2>/dev/null || echo "No vereinsmeisterschaften.csv to backup"
# Backup production data
cp -r server/data .backup/data_backup 2>/dev/null || echo " No server/data to backup"
cp public/data/termine.csv .backup/termine.csv 2>/dev/null || echo " No termine.csv to backup"
cp public/data/mannschaften.csv .backup/mannschaften.csv 2>/dev/null || echo " No mannschaften.csv to backup"
cp public/data/spielsysteme.csv .backup/spielsysteme.csv 2>/dev/null || echo " No spielsysteme.csv to backup"
cp public/data/vereinsmeisterschaften.csv .backup/vereinsmeisterschaften.csv 2>/dev/null || echo " No vereinsmeisterschaften.csv to backup"
# Reset any changes from stash restore
git reset --hard HEAD
# 3. Install dependencies # 3. Install dependencies
echo "" echo ""
@@ -56,11 +74,15 @@ cp .backup/mannschaften.csv public/data/mannschaften.csv 2>/dev/null || echo "No
cp .backup/spielsysteme.csv public/data/spielsysteme.csv 2>/dev/null || echo "No spielsysteme.csv to restore" cp .backup/spielsysteme.csv public/data/spielsysteme.csv 2>/dev/null || echo "No spielsysteme.csv to restore"
cp .backup/vereinsmeisterschaften.csv public/data/vereinsmeisterschaften.csv 2>/dev/null || echo "No vereinsmeisterschaften.csv to restore" cp .backup/vereinsmeisterschaften.csv public/data/vereinsmeisterschaften.csv 2>/dev/null || echo "No vereinsmeisterschaften.csv to restore"
# 7. Cleanup backup # 7. Cleanup backup and stash
echo "" echo ""
echo "7. Cleaning up backup..." echo "7. Cleaning up backup and stash..."
rm -rf .backup rm -rf .backup
# Clear the deployment stash (keep other stashes)
echo " Clearing deployment stash..."
git stash list | grep "Production deployment stash" | head -1 | cut -d: -f1 | xargs -r git stash drop
# 8. Restart PM2 # 8. Restart PM2
echo "" echo ""
echo "8. Restarting PM2..." echo "8. Restarting PM2..."