Vitron-Front/scripts/rollback.sh
2026-04-29 01:44:16 +03:30

80 lines
2.3 KiB
Bash

#!/bin/bash
# Emergency Rollback Script for Production
# Usage: ./scripts/rollback.sh [backup_tag]
set -e
echo "🚨 EMERGENCY ROLLBACK INITIATED"
# Change to project directory
cd "$(dirname "$0")/.."
# Check if backup tag provided
if [ -n "$1" ]; then
BACKUP_TAG="$1"
echo "🔄 Rolling back to specific backup: $BACKUP_TAG"
else
# Get the latest backup
BACKUP_TAG=$(docker images --format "table {{.Repository}}:{{.Tag}}" | grep "vitron-frontend-backup" | head -1 | awk '{print $1}')
if [ -z "$BACKUP_TAG" ]; then
echo "❌ No backup images found!"
echo "Available images:"
docker images | grep vitron
exit 1
fi
echo "🔄 Rolling back to latest backup: $BACKUP_TAG"
fi
# Stop current service
echo "🛑 Stopping current deployment..."
docker-compose -f docker-compose.yml down || true
# Tag backup as production image
echo "🏷️ Tagging backup as production image..."
docker tag "$BACKUP_TAG" vitron-frontend-prod:latest
# Start rollback service
echo "🔨 Starting rollback service..."
docker-compose -f docker-compose.yml up -d --no-build
# Wait for service
echo "⏳ Waiting for rollback service..."
sleep 30
# Health check
echo "🏥 Health check on rollback service..."
HEALTH_RETRIES=0
MAX_HEALTH_RETRIES=5
while [ $HEALTH_RETRIES -lt $MAX_HEALTH_RETRIES ]; do
if docker exec vitron-frontend-prod wget --no-verbose --tries=1 --spider --timeout=10 http://localhost:3000/ 2>/dev/null; then
echo "✅ Rollback service healthy!"
break
else
echo "⏳ Health check attempt $((HEALTH_RETRIES + 1))/$MAX_HEALTH_RETRIES failed, retrying..."
sleep 10
HEALTH_RETRIES=$((HEALTH_RETRIES + 1))
fi
done
if [ $HEALTH_RETRIES -eq $MAX_HEALTH_RETRIES ]; then
echo "❌ Rollback service failed health check!"
echo "🛑 Stopping rollback attempt..."
docker-compose -f docker-compose.yml down
exit 1
fi
# Final verification
echo "🏥 Final verification..."
sleep 10
if curl -f -s --max-time 10 https://vitrown.com/ > /dev/null; then
echo "✅ ROLLBACK COMPLETED SUCCESSFULLY!"
echo "🌐 Site is now accessible at https://vitrown.com"
echo "📋 Rolled back to: $BACKUP_TAG"
else
echo "❌ Final verification failed!"
echo "🔍 Check Traefik configuration and DNS settings"
exit 1
fi