name: sgeUpdated CI/CD on: push: branches: - main workflow_dispatch: concurrency: group: sgeupdated-deploy-${{ github.ref }} cancel-in-progress: true jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v3 - name: Deploy over SSH uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} script_stop: true script: | set -euo pipefail # Go to your repo cd /home/ubuntu/Bgreen/sgeUpdated echo "đŸ“Ļ Fetching latest code from your fork..." git fetch myfork main # Detect which files changed in the last commit CHANGED_FILES=$(git diff --name-only HEAD HEAD~1) echo "đŸĒļ Changed files:" echo "$CHANGED_FILES" echo "🔄 Resetting to your fork's main branch..." git reset --hard myfork/main BACKEND_CHANGED=false FRONTEND_CHANGED=false # Check if backend folder changed if echo "$CHANGED_FILES" | grep -q "^sgeUpdated/sge-backend/"; then BACKEND_CHANGED=true fi # Check if frontend folder changed if echo "$CHANGED_FILES" | grep -q "^sgeUpdated/sge-frontend/"; then FRONTEND_CHANGED=true fi ############################ # Docker readiness check ############################ echo "âŗ Checking Docker status before rebuild..." sleep 5 docker ps -a || true ############################ # Backend section ############################ if [ "$BACKEND_CHANGED" = true ]; then echo "⚡ Backend changes detected." echo "Running Maven build for backend..." cd /home/ubuntu/Bgreen/sgeUpdated/sge-backend /opt/apache-maven-3.9.11/bin/mvn clean install -DskipTests cd /home/ubuntu/Bgreen echo "🔁 Rebuilding backend container..." docker compose -f docker-compose.yml up -d --build bgreen-backend || { echo "âš ī¸ Docker rebuild failed once, retrying..." sleep 5 docker compose -f docker-compose.yml up -d --build bgreen-backend } else echo "✅ No backend changes." fi ############################ # Frontend section ############################ if [ "$FRONTEND_CHANGED" = true ]; then echo "⚡ Frontend changes detected." cd /home/ubuntu/Bgreen/sgeUpdated/sge-frontend echo "Installing npm dependencies and building..." npm install npm run build cd /home/ubuntu/Bgreen echo "🔁 Rebuilding frontend container..." docker compose -f docker-compose.yml up -d --build bgreen-frontend || { echo "âš ī¸ Docker rebuild failed once, retrying..." sleep 5 docker compose -f docker-compose.yml up -d --build bgreen-frontend } else echo "✅ No frontend changes." fi ############################ # If no changes at all ############################ if [ "$BACKEND_CHANGED" = false ] && [ "$FRONTEND_CHANGED" = false ]; then echo "â™ģī¸ No source changes detected. Restarting containers..." docker compose -f /home/ubuntu/Bgreen/docker-compose.yml up -d fi echo "✅ Deployment check complete."