name: sgeUpdated CI/CD on: push: branches: - main # Trigger when code is pushed/merged into main workflow_dispatch: # Allow manual trigger if needed concurrency: group: sgeupdated-deploy-${{ github.ref }} cancel-in-progress: true jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 2 # Needed to compare the last two commits - name: Detect changed files id: detect run: | echo "🔍 Checking which files changed..." FRONTEND_CHANGED=false BACKEND_CHANGED=false # Get list of changed files between the latest two commits CHANGED=$(git diff --name-only HEAD^ HEAD || true) echo "$CHANGED" | grep -q '^sgeUpdated/sge-frontend/' && FRONTEND_CHANGED=true || true echo "$CHANGED" | grep -q '^sgeUpdated/sge-backend/' && BACKEND_CHANGED=true || true echo "frontend=$FRONTEND_CHANGED" >> $GITHUB_OUTPUT echo "backend=$BACKEND_CHANGED" >> $GITHUB_OUTPUT echo "✅ Frontend changed: $FRONTEND_CHANGED" echo "✅ Backend changed: $BACKEND_CHANGED" - name: Deploy Backend if: ${{ steps.detect.outputs.backend == 'true' }} 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 echo "🚀 Starting backend deployment..." cd /home/ubuntu/Bgreen/sgeUpdated git fetch origin main git reset --hard origin/main echo "⚙️ Rebuilding Backend..." cd sgeUpdated/sge-backend /opt/apache-maven-3.9.11/bin/mvn clean install -DskipTests cd ../.. docker compose up -d --build bgreen-backend echo "✅ Backend deployment complete!" docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' - name: Deploy Frontend if: ${{ steps.detect.outputs.frontend == 'true' }} 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 echo "🚀 Starting frontend deployment..." cd /home/ubuntu/Bgreen/sgeUpdated git fetch origin main git reset --hard origin/main echo "⚙️ Rebuilding Frontend..." cd sgeUpdated/sge-frontend # Uncomment below if needed: # npm ci # npm run build cd ../.. docker compose up -d --build bgreen-frontend echo "✅ Frontend deployment complete!" docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'