From f411f440063f99a74366458c757ba1028b97a7cf Mon Sep 17 00:00:00 2001 From: Abdulbari Date: Fri, 24 Oct 2025 15:21:53 +0300 Subject: [PATCH] Update sgeupdated pipeline v22 --- .gitea/workflows/sgeupdated.yml | 118 +++++++++++++++++++++++--------- 1 file changed, 87 insertions(+), 31 deletions(-) diff --git a/.gitea/workflows/sgeupdated.yml b/.gitea/workflows/sgeupdated.yml index bb340db..20252f0 100644 --- a/.gitea/workflows/sgeupdated.yml +++ b/.gitea/workflows/sgeupdated.yml @@ -1,50 +1,106 @@ -# .gitea/workflows/sgeupdated.yml name: sgeUpdated CI/CD on: push: branches: - main - workflow_dispatch: jobs: deploy: + # 'ubuntu-latest' is a common name for runners. + # Check with your Gitea admin if you have a different runner tag. runs-on: ubuntu-latest - + steps: - - name: 🚀 Deploy to Bgreen Server - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.SERVER_HOST }} - username: ${{ secrets.SERVER_USER }} - key: ${{ secrets.SERVER_SSH_KEY }} - script: | + # Gitea automatically checks out your code, so we don't need 'actions/checkout' + + - name: Setup SSH + run: | + # Create the .ssh directory + mkdir -p ~/.ssh/ + + # Add your private key (from Gitea secrets) + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + + # Add your server's host key to known_hosts to avoid the 'yes/no' prompt + # This is a critical step for automation + ssh-keyscan ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts + + - name: Deploy to Server + # This command runs the entire script on your remote server + run: | + ssh ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }} << 'EOF' + # Start of remote script set -euo pipefail - - echo "🔄 Updating repository..." + + echo "✅ Connected to server. Navigating to project..." cd /home/ubuntu/Bgreen/sgeUpdated - git fetch myfork main - git reset --hard myfork/main - - echo "ðŸ“Ķ Installing backend dependencies..." - cd /home/ubuntu/Bgreen/sgeUpdated/sge-backend - if [ -f "pom.xml" ]; then - /opt/apache-maven-3.9.11/bin/mvn clean install -DskipTests + + # 1. Fetch the latest code + git fetch origin main + + # 2. See what files changed between your current version (HEAD) and the new one (origin/main) + # We add '|| true' in case there are no diffs, which would stop 'set -e' + CHANGED_FILES=$(git diff --name-only HEAD origin/main) || true + + if [ -z "$CHANGED_FILES" ]; then + echo "No file changes detected between HEAD and origin/main." else - echo "⚠ïļ No pom.xml found, skipping Maven build" + echo "ðŸŠķ Changed files:" + echo "$CHANGED_FILES" fi - - echo "ðŸ“Ķ Installing frontend dependencies..." - cd /home/ubuntu/Bgreen/sgeUpdated/sge-frontend - if [ -f "package.json" ]; then + + # 3. Update the local repository to the new version + git reset --hard origin/main + + BACKEND_CHANGED=false + FRONTEND_CHANGED=false + + # 4. Check for backend changes (Note the corrected path: no 'sgeUpdated/') + if echo "$CHANGED_FILES" | grep -q "^sge-backend/"; then + BACKEND_CHANGED=true + fi + + # 5. Check for frontend changes (Note the corrected path: no 'sgeUpdated/') + if echo "$CHANGED_FILES" | grep -q "^sge-frontend/"; then + FRONTEND_CHANGED=true + fi + + + # Backend section + if [ "$BACKEND_CHANGED" = true ]; then + echo "⚡ Backend changes detected. Rebuilding backend..." + cd sge-backend + echo "Running Maven build..." + /opt/apache-maven-3.9.11/bin/mvn clean install -DskipTests + cd .. + echo "Rebuilding backend Docker container..." + docker compose up -d --build bgreen-backend + else + echo "✅ No backend changes." + fi + + # Frontend section + if [ "$FRONTEND_CHANGED" = true ]; then + echo "⚡ Frontend changes detected. Rebuilding frontend..." + cd sge-frontend + echo "Running npm install and build..." npm install npm run build + cd .. + echo "Rebuilding frontend Docker container..." + docker compose up -d --build bgreen-frontend else - echo "⚠ïļ No package.json found, skipping frontend build" + echo "✅ No frontend changes." fi - - echo "ðŸģ Rebuilding backend container..." - cd /home/ubuntu/Bgreen - docker compose up -d --build bgreen-backend - - echo "✅ Deployment complete!" + + # This is your final 'build all' condition + # if [ "$BACKEND_CHANGED" = false ] && [ "$FRONTEND_CHANGED" = false ]; then + # echo "â™ŧïļ No source changes detected. Ensuring all containers are up." + # docker compose up -d + # fi + + echo "✅ Deployment script finished." + EOF + # End of remote script