Merge pull request #64 from s0ooo0k/feat/front-fix #35
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: Deploy to Oracle Cloud | |
| on: | |
| push: | |
| branches: [ main, feat/prod ] | |
| pull_request: | |
| branches: [ main ] | |
| jobs: | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Cache Gradle packages | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| - name: Build with Gradle | |
| run: | | |
| set -e | |
| echo "Gradle λΉλλ₯Ό μμν©λλ€..." | |
| ./gradlew build -x test | |
| echo "Gradle λΉλ μ±κ³΅!" | |
| - name: Create deployment package | |
| if: github.event_name == 'push' | |
| run: | | |
| mkdir -p deploy | |
| if ls build/libs/*.jar 1> /dev/null 2>&1; then | |
| cp build/libs/*.jar deploy/petty-app.jar | |
| echo "JAR νμΌ λ³΅μ¬ μλ£" | |
| else | |
| echo "JAR νμΌμ΄ μ‘΄μ¬νμ§ μμ΅λλ€. λ°°ν¬ μ€λ¨" | |
| exit 1 | |
| fi | |
| - name: Deploy to Oracle Cloud | |
| if: github.event_name == 'push' | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_HOST }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SERVER_SSH_KEY }} | |
| script: | | |
| sudo systemctl stop petty-app || true | |
| if [ -f /home/ubuntu/petty-app/app/petty-app.jar ]; then | |
| cp /home/ubuntu/petty-app/app/petty-app.jar /home/ubuntu/petty-app/app/petty-app.jar.backup | |
| fi | |
| echo "μ JAR νμΌ λ³΅μ¬λ₯Ό κΈ°λ€λ¦¬λ μ€..." | |
| - name: Copy JAR file | |
| if: github.event_name == 'push' | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_HOST }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SERVER_SSH_KEY }} | |
| source: "deploy/petty-app.jar" | |
| target: "/home/ubuntu/petty-app/app/" | |
| strip_components: 1 | |
| - name: Start application | |
| if: github.event_name == 'push' | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_HOST }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SERVER_SSH_KEY }} | |
| script: | | |
| # νκ²½ λ³μ νμΌ μ λ°μ΄νΈ | |
| cat > /home/ubuntu/petty-app/.env << 'EOF' | |
| # Database | |
| DB_SUPABASE_URL=${{ secrets.DB_SUPABASE_URL }} | |
| DB_SUPABASE_USERNAME=${{ secrets.DB_SUPABASE_USERNAME }} | |
| DB_SUPABASE_PASSWORD=${{ secrets.DB_SUPABASE_PASSWORD }} | |
| DB_AIVEN_URL=${{ secrets.DB_AIVEN_URL }} | |
| DB_AIVEN_USERNAME=${{ secrets.DB_AIVEN_USERNAME }} | |
| DB_AIVEN_PASSWORD=${{ secrets.DB_AIVEN_PASSWORD }} | |
| # JWT | |
| JWT_SECRET=${{ secrets.JWT_SECRET }} | |
| JWT_EXPIRATION_TIME=3600000 | |
| # OAuth | |
| OAUTH_GITHUB_CLIENT_ID=${{ secrets.OAUTH_GITHUB_CLIENT_ID }} | |
| OAUTH_GITHUB_CLIENT_SECRET=${{ secrets.OAUTH_GITHUB_CLIENT_SECRET }} | |
| OAUTH_KAKAO_CLIENT_ID=${{ secrets.OAUTH_KAKAO_CLIENT_ID }} | |
| OAUTH_KAKAO_CLIENT_SECRET=${{ secrets.OAUTH_KAKAO_CLIENT_SECRET }} | |
| OAUTH_KAKAO_REDIRECT_URI=${{ secrets.OAUTH_KAKAO_REDIRECT_URI }} | |
| EMAIL_USERNAME=${{ secrets.EMAIL_USERNAME }} | |
| EMAIL_PASSWORD=${{ secrets.EMAIL_PASSWORD }} | |
| # AWS | |
| AWS_REGION=${{ secrets.AWS_REGION }} | |
| AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| # Supabase | |
| SUPABASE_URL=${{ secrets.SUPABASE_URL }} | |
| SUPABASE_KEY=${{ secrets.SUPABASE_KEY }} | |
| SUPABASE_BUCKET=${{ secrets.SUPABASE_BUCKET }} | |
| # OpenAI | |
| OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }} | |
| # Qdrant | |
| QDRANT_HOST=${{ secrets.QDRANT_HOST }} | |
| QDRANT_PORT=${{ secrets.QDRANT_PORT }} | |
| QDRANT_COLLECTION=${{ secrets.QDRANT_COLLECTION }} | |
| QDRANT_API_KEY=${{ secrets.QDRANT_API_KEY }} | |
| # Vision APIs | |
| GEMINI_VISION_URL=${{ secrets.GEMINI_VISION_URL }} | |
| GEMINI_VISION_KEY=${{ secrets.GEMINI_VISION_KEY }} | |
| TOGETHER_VISION_URL=${{ secrets.TOGETHER_VISION_URL }} | |
| TOGETHER_VISION_KEY=${{ secrets.TOGETHER_VISION_KEY }} | |
| # Chat APIs | |
| GEMINI_CHAT_URL=${{ secrets.GEMINI_CHAT_URL }} | |
| GEMINI_CHAT_KEY=${{ secrets.GEMINI_CHAT_KEY }} | |
| TOGETHER_CHAT_MODEL=${{ secrets.TOGETHER_CHAT_MODEL }} | |
| TOGETHER_CHAT_URL=${{ secrets.TOGETHER_CHAT_URL }} | |
| TOGETHER_CHAT_KEY=${{ secrets.TOGETHER_CHAT_KEY }} | |
| # Tour API | |
| TOUR_API_BASE_URL=${{ secrets.TOUR_API_BASE_URL }} | |
| TOUR_API_SERVICE_KEY=${{ secrets.TOUR_API_SERVICE_KEY }} | |
| TOUR_API_MOBILE_OS=${{ secrets.TOUR_API_MOBILE_OS }} | |
| TOUR_API_MOBILE_APP=${{ secrets.TOUR_API_MOBILE_APP }} | |
| TOUR_API_TYPE=${{ secrets.TOUR_API_TYPE }} | |
| EOF | |
| chmod 600 /home/ubuntu/petty-app/.env | |
| # μλΉμ€ μ€ν | |
| sudo systemctl start petty-app | |
| echo "μλΉμ€ μμ μλ£. μν νμΈ μ€..." | |
| # λ μ νν μν νμΈ (60μ΄ λκΈ°) | |
| sleep 60 | |
| # 1. μ νν μλΉμ€ μν νμΈ | |
| status=$(sudo systemctl is-active petty-app) | |
| echo "μλΉμ€ μν: $status" | |
| if [ "$status" != "active" ]; then | |
| echo "β μλΉμ€κ° μ μμ μΌλ‘ μ€νλμ§ μμμ΅λλ€." | |
| echo "=== μλΉμ€ μν ===" | |
| sudo systemctl status petty-app --no-pager | |
| echo "=== μ΅κ·Ό λ‘κ·Έ ===" | |
| sudo journalctl -u petty-app -n 20 --no-pager | |
| exit 1 | |
| fi | |
| # 2. μλ¬ λ‘κ·Έ νμΈ | |
| if sudo journalctl -u petty-app -n 20 | grep -i "error\|exception\|failed"; then | |
| echo "β μ ν리μΌμ΄μ λ‘κ·Έμμ μλ¬κ° λ°κ²¬λμμ΅λλ€." | |
| echo "=== μλ¬ λ‘κ·Έ ===" | |
| sudo journalctl -u petty-app -n 50 --no-pager | |
| exit 1 | |
| fi | |
| # 3. μΆκ° μμ μ± μ²΄ν¬ (30μ΄ λ λκΈ° ν μ¬νμΈ) | |
| echo "μΆκ° μμ μ± νμΈ μ€..." | |
| sleep 35 | |
| final_status=$(sudo systemctl is-active petty-app) | |
| if [ "$final_status" != "active" ]; then | |
| echo "β μλΉμ€κ° λΆμμ ν©λλ€. μ΅μ’ μν: $final_status" | |
| sudo systemctl status petty-app --no-pager | |
| sudo journalctl -u petty-app -n 30 --no-pager | |
| exit 1 | |
| fi | |
| # 4. νλ‘μΈμ€ μ€μ μ€ν νμΈ | |
| if ! pgrep -f "petty-app.jar" > /dev/null; then | |
| echo "β petty-app.jar νλ‘μΈμ€κ° μ€νλμ§ μμμ΅λλ€." | |
| ps aux | grep java | |
| exit 1 | |
| fi | |
| echo "β λ°°ν¬κ° μ±κ³΅μ μΌλ‘ μλ£λμμ΅λλ€!" | |
| echo "=== μ΅μ’ μν ===" | |
| sudo systemctl status petty-app --no-pager | |
| echo "=== μ€ν μ€μΈ Java νλ‘μΈμ€ ===" | |
| ps aux | grep java | grep -v grep |