[Feat] 사용자 피드백 등록 API 개발 (#78) #28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |