Skip to content

Commit c586342

Browse files
yunabyteYuna
andauthored
[CICD] Dev 서버용 배포 파이프라인 생성 (#49)
Co-authored-by: Yuna <yuna@Yunaui-MacBookPro.local>
1 parent c785df7 commit c586342

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
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

Comments
 (0)