Skip to content

Merge pull request #54 from PentabyteDevAlign/feat/profile-menu #53

Merge pull request #54 from PentabyteDevAlign/feat/profile-menu

Merge pull request #54 from PentabyteDevAlign/feat/profile-menu #53

name: Deploy Backend to EC2
on:
push:
branches:
- dev
paths:
- 'Backend/**'
- 'AI/**'
- 'docker-compose.yml'
- '.github/workflows/deploy-backend.yml'
jobs:
deploy-backend:
name: Deploy Backend + AI with Docker
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy to Backend EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.BACKEND_HOST }}
username: ubuntu
key: ${{ secrets.BACKEND_SSH_KEY }}
script: |
echo "=========================================="
echo "πŸš€ Starting Backend Deployment with Docker"
echo "=========================================="
echo "πŸ“ Backend Server: 13.250.231.18"
echo ""
# Navigate to deployment directory
cd /var/www/backend || exit 1
# Backup old version (if exists)
if [ -d "DevAlign" ]; then
echo "πŸ“¦ Backing up current version..."
rm -rf DevAlign-backup
cp -r DevAlign DevAlign-backup
echo "βœ… Backup created"
fi
# Clone or pull latest code from dev branch
if [ -d "DevAlign" ]; then
echo "πŸ“₯ Pulling latest changes from dev branch..."
cd DevAlign
git fetch origin dev
git reset --hard origin/dev
git pull origin dev
else
echo "πŸ“₯ Cloning repository..."
git clone -b dev https://github.com/PentabyteDevAlign/DevAlign.git
cd DevAlign
fi
echo "βœ… Code updated successfully"
echo ""
# Copy environment files from secure location
echo "βš™οΈ Copying environment variables..."
cp /var/www/backend/.env.backend Backend/.env
cp /var/www/backend/.env.ai AI/.env
echo "βœ… Environment files copied"
echo ""
# Stop existing Docker containers
echo "πŸ›‘ Stopping existing Docker containers..."
docker compose down 2>/dev/null || true
echo "βœ… Containers stopped"
echo ""
# Remove old images to save space (optional, but recommended)
echo "🧹 Cleaning up old Docker images..."
docker image prune -f
echo ""
# Build and start containers
echo "πŸ”¨ Building and starting Docker containers..."
docker compose up -d --build
# Wait for containers to be healthy
echo ""
echo "⏳ Waiting for containers to start (10 seconds)..."
sleep 10
# Check container status
echo ""
echo "πŸ“Š Container Status:"
docker compose ps
# Show container logs (last 20 lines)
echo ""
echo "πŸ“‹ Recent Backend Logs:"
docker compose logs --tail=20 backend
echo ""
echo "πŸ“‹ Recent AI Backend Logs:"
docker compose logs --tail=20 ai-backend
echo ""
echo "=========================================="
echo "βœ… Backend Deployment Complete!"
echo "=========================================="
echo "🌐 Backend API: http://13.250.231.18:5000"
echo "πŸ€– AI API: http://13.250.231.18:8000"
echo ""
echo "πŸ“Š Check logs with:"
echo " docker compose logs -f backend"
echo " docker compose logs -f ai-backend"
echo ""
echo "πŸ”„ Restart containers with:"
echo " docker compose restart"
echo "=========================================="