forked from BLC/sgeUpdated
93 lines
3.0 KiB
YAML
93 lines
3.0 KiB
YAML
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}}'
|