diff --git a/.gitea/workflows/sgeupdated.yml b/.gitea/workflows/sgeupdated.yml index f60c5e1..5584338 100644 --- a/.gitea/workflows/sgeupdated.yml +++ b/.gitea/workflows/sgeupdated.yml @@ -1,97 +1,56 @@ -name: SgeUpdated Deploy +# .gitea/workflows/sgeupdated.yml +name: sgeUpdated CI/CD on: push: - branches: [ "main" ] - workflow_dispatch: - -concurrency: - group: sgeupdated-deploy-${{ github.ref }} - cancel-in-progress: true + branches: + - main # trigger only when code is merged into main jobs: - deploy-frontend: - if: contains(github.event.head_commit.message, '[frontend]') || github.event_name == 'workflow_dispatch' - runs-on: ubuntu-22.04 + deploy: + runs-on: ubuntu-latest steps: - - name: Deploy Frontend over SSH + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Deploy over SSH uses: appleboy/ssh-action@v1.0.3 - env: - PROJECT_DIR: /home/ubuntu/sgeUpdated - FRONTEND_DIR: /home/ubuntu/sgeUpdated/sge-frontend - SERVICE: sgeupdated-frontend - SMOKE_URL: http://127.0.0.1:3000 with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} - envs: PROJECT_DIR,FRONTEND_DIR,SERVICE,SMOKE_URL script_stop: true - script: | - set -euo pipefail + + script: | + cd /home/ubuntu/sgeUpdated + git fetch origin main + git reset --hard origin/main - echo "==== Frontend Deploy ====" - cd "$FRONTEND_DIR" - git fetch origin main - git checkout -B main origin/main - echo "Frontend repo now: $(git rev-parse --short HEAD)" + echo "🔍 Detecting changes..." + CHANGED_FILES=$(git diff --name-only HEAD^ HEAD || true) + echo "Changed files: $CHANGED_FILES" - cd "$PROJECT_DIR" - echo ":: Rebuild & restart $SERVICE" - docker compose up -d --build "$SERVICE" + # --- Backend --- + if echo "$CHANGED_FILES" | grep -E "(^|/)sge-backend/"; then + echo "⚙️ Backend changes detected. Rebuilding backend..." + cd sge-backend + mvn clean install -DskipTests + cd .. + docker compose build --no-cache backend + docker compose up -d --force-recreate backend + else + echo "✅ No backend changes detected." + fi - echo ":: Health check (retry up to 60s)" - for i in $(seq 1 20); do - if curl -fsSI --max-time 3 "$SMOKE_URL" >/dev/null; then - echo "Frontend healthy ✅" - break - fi - echo "Waiting..." - docker compose logs --tail=50 "$SERVICE" || true - sleep 3 - done - - docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' - - deploy-backend: - if: contains(github.event.head_commit.message, '[backend]') || github.event_name == 'workflow_dispatch' - runs-on: ubuntu-22.04 - steps: - - name: Deploy Backend over SSH - uses: appleboy/ssh-action@v1.0.3 - env: - PROJECT_DIR: /home/ubuntu/sgeUpdated - BACKEND_DIR: /home/ubuntu/sgeUpdated/sge-backend - SERVICE: sgeupdated-backend - SMOKE_URL: http://127.0.0.1:8080/actuator/health - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USER }} - key: ${{ secrets.SSH_PRIVATE_KEY }} - envs: PROJECT_DIR,BACKEND_DIR,SERVICE,SMOKE_URL - script_stop: true - script: | - set -euo pipefail - - echo "==== Backend Deploy ====" - cd "$BACKEND_DIR" - git fetch origin main - git checkout -B main origin/main - echo "Backend repo now: $(git rev-parse --short HEAD)" - - cd "$PROJECT_DIR" - echo ":: Rebuild & restart $SERVICE" - docker compose up -d --build "$SERVICE" - - echo ":: Health check (retry up to 60s)" - for i in $(seq 1 20); do - if curl -fsSI --max-time 3 "$SMOKE_URL" >/dev/null; then - echo "Backend healthy ✅" - break - fi - echo "Waiting..." - docker compose logs --tail=50 "$SERVICE" || true - sleep 3 - done - - docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' + # --- Frontend --- + if echo "$CHANGED_FILES" | grep -E "(^|/)sge-frontend/"; then + echo "⚙️ Frontend changes detected. Rebuilding frontend..." + cd sge-frontend + npm install + npm run build + cd .. + docker compose build --no-cache frontend + docker compose up -d --force-recreate frontend + else + echo "✅ No frontend changes detected." + fi