chitfund/old_docs_backup_20251105_20.../deploy-frontend.sh

200 lines
6.9 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
###############################################################################
# LuckyChit Frontend Deployment Script
# Deploys Flutter Web App to Nginx
###############################################################################
set -e # Exit on error
# Colors
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Configuration
SERVER_IP="192.168.8.148"
API_URL="http://${SERVER_IP}:3000/api"
PROJECT_DIR="/home/luckychit/apps/chitfund/luckychit"
WEB_ROOT="/var/www/luckychit"
API_SERVICE_FILE="lib/core/services/api_service.dart"
print_info() {
echo -e "${BLUE} $1${NC}"
}
print_success() {
echo -e "${GREEN}$1${NC}"
}
print_error() {
echo -e "${RED}$1${NC}"
}
print_header() {
echo ""
echo -e "${GREEN}╔════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ LuckyChit Frontend Deployment Script ║${NC}"
echo -e "${GREEN}╚════════════════════════════════════════════════════════╝${NC}"
echo ""
}
###############################################################################
# Main Deployment
###############################################################################
print_header
# Check if running as root
if [ "$EUID" -ne 0 ]; then
print_error "Please run as root (sudo ./deploy-frontend.sh)"
exit 1
fi
print_info "Deployment Configuration:"
echo " Server IP: $SERVER_IP"
echo " API URL: $API_URL"
echo " Project Dir: $PROJECT_DIR"
echo " Web Root: $WEB_ROOT"
echo ""
read -p "Continue with deployment? (y/n) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
print_error "Deployment cancelled"
exit 1
fi
###############################################################################
# Step 1: Navigate to project directory
###############################################################################
print_info "Step 1/8: Navigating to project directory..."
cd $PROJECT_DIR
print_success "In directory: $(pwd)"
###############################################################################
# Step 2: Create backup of current API service
###############################################################################
print_info "Step 2/8: Creating backup of API service..."
if [ -f "$API_SERVICE_FILE" ]; then
cp $API_SERVICE_FILE ${API_SERVICE_FILE}.backup
print_success "Backup created: ${API_SERVICE_FILE}.backup"
else
print_error "API service file not found: $API_SERVICE_FILE"
exit 1
fi
###############################################################################
# Step 3: Update API URL
###############################################################################
print_info "Step 3/8: Updating API URL to $API_URL..."
# Replace localhost URL with server IP
sed -i "s|http://localhost:3000/api|$API_URL|g" $API_SERVICE_FILE
# Verify the change
if grep -q "$API_URL" $API_SERVICE_FILE; then
print_success "API URL updated successfully"
else
print_error "Failed to update API URL"
exit 1
fi
###############################################################################
# Step 4: Update Flutter
###############################################################################
print_info "Step 4/8: Updating Flutter..."
cd /opt/flutter
git pull origin stable
flutter upgrade
print_success "Flutter updated: $(flutter --version | head -n 1)"
###############################################################################
# Step 5: Get dependencies
###############################################################################
print_info "Step 5/8: Getting Flutter dependencies..."
cd $PROJECT_DIR
flutter pub get
print_success "Dependencies installed"
###############################################################################
# Step 6: Build Flutter web app
###############################################################################
print_info "Step 6/8: Building Flutter web app..."
flutter build web --release --web-renderer html
print_success "Flutter web app built successfully"
###############################################################################
# Step 7: Deploy to web server
###############################################################################
print_info "Step 7/8: Deploying to web server..."
# Create web root if it doesn't exist
mkdir -p $WEB_ROOT
# Backup existing deployment
if [ -d "$WEB_ROOT" ] && [ "$(ls -A $WEB_ROOT)" ]; then
BACKUP_DIR="${WEB_ROOT}_backup_$(date +%Y%m%d_%H%M%S)"
print_info "Backing up existing deployment to $BACKUP_DIR"
cp -r $WEB_ROOT $BACKUP_DIR
fi
# Copy new build
cp -r build/web/* $WEB_ROOT/
# Set proper permissions
chown -R www-data:www-data $WEB_ROOT
chmod -R 755 $WEB_ROOT
print_success "Deployed to $WEB_ROOT"
###############################################################################
# Step 8: Verify deployment
###############################################################################
print_info "Step 8/8: Verifying deployment..."
if [ -f "$WEB_ROOT/index.html" ]; then
print_success "Deployment verified - index.html exists"
else
print_error "Deployment failed - index.html not found"
exit 1
fi
###############################################################################
# Cleanup
###############################################################################
print_info "Restoring original API service file for future builds..."
if [ -f "${API_SERVICE_FILE}.backup" ]; then
mv ${API_SERVICE_FILE}.backup $API_SERVICE_FILE
print_success "Original API service restored"
fi
###############################################################################
# Complete
###############################################################################
echo ""
echo -e "${GREEN}╔════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ Deployment Complete! 🎉 ║${NC}"
echo -e "${GREEN}╚════════════════════════════════════════════════════════╝${NC}"
echo ""
print_success "Frontend deployed successfully!"
echo ""
print_info "Access your application at:"
echo " 🌐 http://$SERVER_IP"
echo ""
print_info "Backend API is at:"
echo " 🔌 http://$SERVER_IP:3000/api"
echo " 💚 Health: http://$SERVER_IP:3000/health"
echo ""
print_info "Next steps:"
echo " 1. Test the application in your browser"
echo " 2. Check backend is running: pm2 status"
echo " 3. View logs: pm2 logs luckychit-api"
echo ""
print_info "To rollback, use the backup at:"
echo " $(ls -td ${WEB_ROOT}_backup_* 2>/dev/null | head -1)"
echo ""