Skip to content

Merge branch 'main' into develop #26

Merge branch 'main' into develop

Merge branch 'main' into develop #26

name: SpringBoot BigBang CI/CD - Dev V1
on:
push:
branches:
- develop
jobs:
build-and-deploy:
runs-on: ubuntu-latest
environment: dev
steps:
- name: 🐵 Checkout Repository
uses: actions/checkout@v3
- name: 🐵 Set up JDK 21
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '21'
- name: 🐵 Grant execute permission to Gradle
run: chmod +x gradlew
- name: 🐵 Build with Gradle (Without Tests)
run: |
echo "🐵 Building JAR without tests..."
./gradlew clean build -x test || { echo '🚨 Build failed!'; exit 1; }
echo "✅ Build completed successfully!"
- name: 🐵 Save SSH Key
run: |
echo "🐵 Saving SSH key..."
echo "${{ secrets.GCP_CICD_SSH_KEY }}" > key.pem
chmod 600 key.pem
echo "✅ SSH key saved!"
- name: 🐵 Deploy to GCP VM
run: |
echo "🐵 Sending JAR to GCP..."
scp -i key.pem -o StrictHostKeyChecking=no \
build/libs/moa-server-0.0.1-SNAPSHOT.jar \
cicd@${{ secrets.GCP_BE_DEV_HOST }}:/home/cicd/moa-server-0.0.1-SNAPSHOT.jar || {
echo "🚨 Failed to upload JAR!"; exit 1;
}
echo "✅ JAR uploaded successfully!"
echo "🐵 Writing .env on remote server..."
ssh -i key.pem -o StrictHostKeyChecking=no cicd@${{ secrets.GCP_BE_DEV_HOST }} << 'EOF'
cat <<EENV | sudo tee /home/cicd/moa-backend.env > /dev/null
SPRING_PROFILES_ACTIVE=${{ secrets.SPRING_PROFILE }}
SPRING_DATASOURCE_URL=${{ secrets.DB_URL }}
SPRING_DATASOURCE_USERNAME=${{ secrets.DB_USERNAME }}
SPRING_DATASOURCE_PASSWORD=${{ secrets.DB_PASSWORD }}
JWT_SECRET=${{ secrets.JWT_SECRET }}
FRONTEND_URL=${{ secrets.FRONTEND_URL }}
AI_SERVER_URL=${{ secrets.AI_SERVER_URL }}
KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}
KAKAO_ADMIN_KEY=${{ secrets.KAKAO_ADMIN_KEY }}
EENV
sudo chmod 600 /home/cicd/moa-backend.env
sudo chown cicd:cicd /home/cicd/moa-backend.env
echo "✅ .env file written and secured!"
EOF
- name: 🐵 Restart systemd Service
run: |
echo "🐵 Restarting Spring Boot systemd service..."
ssh -i key.pem -o StrictHostKeyChecking=no cicd@${{ secrets.GCP_BE_DEV_HOST }} << 'EOF'
echo "🐵 Running daemon-reload and restarting moa-backend..."
sudo systemctl daemon-reload || { echo "🚨 daemon-reload failed!"; exit 1; }
sudo systemctl restart moa-backend || { echo "🚨 Failed to restart service!"; exit 1; }
sleep 7
echo "✅ Service restarted successfully!"
echo "🐵 Checking process..."
if ! sudo pgrep -f 'java -jar' > /dev/null; then
echo "🚨 Spring Boot process not running!"
exit 1
fi
echo "✅ Spring Boot process is running!"
echo "🐵 Tail last 20 lines of server.log:"
sudo tail -n 20 /home/cicd/server.log || echo "🚨 Failed to read server.log"
EOF