1+ name : SpringBoot BigBang CI/CD - Dev V1
2+
3+ on :
4+ push :
5+ branches :
6+ - develop
7+
8+ jobs :
9+ build-and-deploy :
10+ runs-on : ubuntu-latest
11+ environment : dev
12+
13+ steps :
14+ - name : 🐵 Checkout Repository
15+ uses : actions/checkout@v3
16+
17+ - name : 🐵 Set up JDK 21
18+ uses : actions/setup-java@v3
19+ with :
20+ distribution : ' temurin'
21+ java-version : ' 21'
22+
23+ - name : 🐵 Grant execute permission to Gradle
24+ run : chmod +x gradlew
25+
26+ - name : 🐵 Build with Gradle (Without Tests)
27+ run : |
28+ echo "🐵 Building JAR without tests..."
29+ ./gradlew clean build -x test || { echo '🚨 Build failed!'; exit 1; }
30+ echo "✅ Build completed successfully!"
31+
32+ - name : 🐵 Save SSH Key
33+ run : |
34+ echo "🐵 Saving SSH key..."
35+ echo "${{ secrets.GCP_CICD_SSH_KEY }}" > key.pem
36+ chmod 600 key.pem
37+ echo "✅ SSH key saved!"
38+
39+ - name : 🐵 Deploy to GCP VM
40+ run : |
41+ echo "🐵 Sending JAR to GCP..."
42+
43+ scp -i key.pem -o StrictHostKeyChecking=no \
44+ build/libs/moa-server-0.0.1-SNAPSHOT.jar \
45+ cicd@${{ secrets.GCP_BE_DEV_HOST }}:/home/cicd/moa-server-0.0.1-SNAPSHOT.jar || {
46+ echo "🚨 Failed to upload JAR!"; exit 1;
47+ }
48+ echo "✅ JAR uploaded successfully!"
49+
50+ echo "🐵 Writing .env on remote server..."
51+ ssh -i key.pem -o StrictHostKeyChecking=no cicd@${{ secrets.GCP_BE_DEV_HOST }} << 'EOF'
52+ cat <<EENV | sudo tee /home/cicd/moa-backend.env > /dev/null
53+ SPRING_PROFILES_ACTIVE=${{ secrets.SPRING_PROFILE }}
54+ SPRING_DATASOURCE_URL=${{ secrets.DB_URL }}
55+ SPRING_DATASOURCE_USERNAME=${{ secrets.DB_USERNAME }}
56+ SPRING_DATASOURCE_PASSWORD=${{ secrets.DB_PASSWORD }}
57+ JWT_SECRET=${{ secrets.JWT_SECRET }}
58+ FRONTEND_URL=${{ secrets.FRONTEND_URL }}
59+ AI_SERVER_URL=${{ secrets.AI_SERVER_URL }}
60+ KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}
61+ EENV
62+ sudo chmod 600 /home/cicd/moa-backend.env
63+ sudo chown cicd:cicd /home/cicd/moa-backend.env
64+ echo "✅ .env file written and secured!"
65+ EOF
66+
67+ - name : 🐵 Restart systemd Service
68+ run : |
69+ echo "🐵 Restarting Spring Boot systemd service..."
70+ ssh -i key.pem -o StrictHostKeyChecking=no cicd@${{ secrets.GCP_BE_DEV_HOST }} << 'EOF'
71+ echo "🐵 Running daemon-reload and restarting moa-backend..."
72+ sudo systemctl daemon-reload || { echo "🚨 daemon-reload failed!"; exit 1; }
73+ sudo systemctl restart moa-backend || { echo "🚨 Failed to restart service!"; exit 1; }
74+
75+ sleep 7
76+ echo "✅ Service restarted successfully!"
77+
78+ echo "🐵 Checking process..."
79+ if ! sudo pgrep -f 'java -jar' > /dev/null; then
80+ echo "🚨 Spring Boot process not running!"
81+ exit 1
82+ fi
83+
84+ echo "✅ Spring Boot process is running!"
85+
86+ echo "🐵 Tail last 20 lines of server.log:"
87+ sudo tail -n 20 /home/cicd/server.log || echo "🚨 Failed to read server.log"
88+ EOF
0 commit comments