fix: 찾을 수 없는 호환성 제거 #335
  
    
      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
    
  
  
    
  | # This workflow uses actions that are not certified by GitHub. | |
| # They are provided by a third-party and are governed by | |
| # separate terms of service, privacy policy, and support | |
| # documentation. | |
| # This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time | |
| # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle | |
| name: Java CI/CD with Gradle | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| permissions: | |
| contents: read | |
| id-token: write | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # Gradle 권한 설정 추가 | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| - name: Build with Gradle | |
| working-directory: ./Location-based-target-authentication | |
| run: | | |
| chmod +x ./gradlew | |
| ./gradlew bootJar --info --stacktrace | |
| - name: Upload JAR | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: app | |
| path: ./Location-based-target-authentication/build/libs/*.jar | |
| if-no-files-found: error | |
| deploy: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: app | |
| # SSH 키 설정 | |
| - name: Setup SSH | |
| run: | | |
| mkdir -p ~/.ssh | |
| echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key | |
| chmod 700 ~/.ssh | |
| chmod 600 ~/.ssh/deploy_key | |
| eval $(ssh-agent -s) | |
| ssh-add ~/.ssh/deploy_key | |
| echo "${{ secrets.SERVER_IP }} $(ssh-keyscan -t ecdsa ${{ secrets.SERVER_IP }} 2>/dev/null)" >> ~/.ssh/known_hosts | |
| ssh-keyscan -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts | |
| # JAR 파일 전송 | |
| - name: Copy JAR to Server | |
| run: | | |
| ls -la | |
| scp -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no *.jar ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:/home/${{ secrets.SERVER_USER }}/ | |
| # 서버에서 JAR 실행 | |
| - name: Execute JAR | |
| uses: appleboy/ssh-action@v1.0.0 | |
| with: | |
| host: ${{ secrets.SERVER_IP }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| script: | | |
| cd /home/${{ secrets.SERVER_USER }} | |
| # JAR 파일 권한 설정 | |
| chmod +x Location-based-target-authentication-0.0.1-SNAPSHOT.jar | |
| # 서비스 파일 생성 | |
| sudo tee /etc/systemd/system/willgo.service << EOF | |
| [Unit] | |
| Description=Willgo Backend Application | |
| After=network.target | |
| [Service] | |
| Type=simple | |
| User=root | |
| WorkingDirectory=/home/${{ secrets.SERVER_USER }} | |
| # 환경 변수 설정 | |
| Environment=JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} | |
| Environment=JWT_ACCESS_TOKEN_EXPIRATION=600000 | |
| Environment=JWT_REFRESH_TOKEN_EXPIRATION=604800000 | |
| Environment=KAKAO_API_KEY=${{ secrets.KAKAO_API_KEY }} | |
| Environment=KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }} | |
| Environment=KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }} | |
| Environment=KAKAO_REDIRECT_URI=http://${{ secrets.SERVER_IP }}:8443/api/v1/auth/kakao/callback | |
| Environment=GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }} | |
| Environment=GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }} | |
| Environment=GOOGLE_REDIRECT_URI=http://${{ secrets.SERVER_IP }}:8443/api/v1/auth/google/callback | |
| Environment=SPRING_MAIL_HOST=${{ secrets.MAIL_HOST }} | |
| Environment=SPRING_MAIL_PORT=${{ secrets.MAIL_PORT }} | |
| Environment=SPRING_MAIL_USERNAME=${{ secrets.MAIL_USERNAME }} | |
| Environment=SPRING_MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }} | |
| Environment=SERVER_PORT=8443 | |
| Environment=SERVER_ADDRESS=0.0.0.0 | |
| Environment=SPRING_PROFILES_ACTIVE=secret | |
| Environment=LOGGING_LEVEL_ROOT=INFO | |
| Environment=LOGGING_LEVEL_COM_SWYP=DEBUG | |
| Environment=LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_SECURITY=DEBUG | |
| Environment=LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG | |
| Environment=LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_OAUTH2=DEBUG | |
| Environment=SPRINGDOC_SWAGGER_UI_PATH=/swagger-ui/index.html | |
| Environment=SPRINGDOC_API_DOCS_PATH=/v3/api-docs | |
| Environment=SPRINGDOC_SWAGGER_UI_ENABLED=true | |
| Environment=SPRINGDOC_API_DOCS_ENABLED=true | |
| ExecStart=/usr/lib/jvm/java-17-openjdk-amd64/bin/java \ | |
| -Xms512m \ | |
| -Xmx1024m \ | |
| -XX:+HeapDumpOnOutOfMemoryError \ | |
| -XX:HeapDumpPath=/home/${{ secrets.SERVER_USER }}/heapdump.hprof \ | |
| -Dspring.output.ansi.enabled=always \ | |
| -Dlogging.file.name=/home/${{ secrets.SERVER_USER }}/logs/willgo.log \ | |
| -Dlogging.pattern.console='%%d{yyyy-MM-dd HH:mm:ss} [%%p] - %%m%%n' \ | |
| -Dlogging.pattern.file='%%d{yyyy-MM-dd HH:mm:ss} [%%p] - %%m%%n' \ | |
| -jar Location-based-target-authentication-0.0.1-SNAPSHOT.jar \ | |
| --spring.profiles.active=${SPRING_PROFILES_ACTIVE} \ | |
| --server.port=${SERVER_PORT} \ | |
| --server.address=${SERVER_ADDRESS} \ | |
| --server.ssl.enabled=false \ | |
| --springdoc.swagger-ui.path=${SPRINGDOC_SWAGGER_UI_PATH} \ | |
| --springdoc.api-docs.path=${SPRINGDOC_API_DOCS_PATH} \ | |
| --springdoc.swagger-ui.enabled=${SPRINGDOC_SWAGGER_UI_ENABLED} \ | |
| --springdoc.api-docs.enabled=${SPRINGDOC_API_DOCS_ENABLED} \ | |
| --springdoc.swagger-ui.configUrl=/v3/api-docs/swagger-config \ | |
| --springdoc.swagger-ui.url=/v3/api-docs \ | |
| --logging.level.root=${LOGGING_LEVEL_ROOT} \ | |
| --logging.level.com.swyp=${LOGGING_LEVEL_COM_SWYP} \ | |
| --logging.level.org.springframework.security=${LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_SECURITY} \ | |
| --logging.level.org.springframework.web=${LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB} \ | |
| --logging.level.org.springframework.oauth2=${LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_OAUTH2} \ | |
| --logging.level.org.springframework.web.cors=TRACE \ | |
| --debug=true \ | |
| --trace=true \ | |
| --spring.mail.host=${SPRING_MAIL_HOST} \ | |
| --spring.mail.port=${SPRING_MAIL_PORT} \ | |
| --spring.mail.username=${SPRING_MAIL_USERNAME} \ | |
| --spring.mail.password=${SPRING_MAIL_PASSWORD} \ | |
| --spring.mail.properties.mail.smtp.auth=true \ | |
| --spring.mail.properties.mail.smtp.starttls.enable=true \ | |
| --spring.mail.properties.mail.smtp.ssl.trust=smtp.gmail.com \ | |
| --spring.mail.properties.mail.smtp.ssl.protocols=TLSv1.2 \ | |
| --spring.mail.properties.mail.debug=true \ | |
| --spring.security.oauth2.client.registration.google.client-id=${GOOGLE_CLIENT_ID} \ | |
| --spring.security.oauth2.client.registration.google.client-secret=${GOOGLE_CLIENT_SECRET} \ | |
| --spring.security.oauth2.client.registration.google.redirect-uri=${GOOGLE_REDIRECT_URI} \ | |
| --spring.security.oauth2.client.registration.kakao.client-id=${KAKAO_CLIENT_ID} \ | |
| --spring.security.oauth2.client.registration.kakao.client-secret=${KAKAO_CLIENT_SECRET} \ | |
| --spring.security.oauth2.client.registration.kakao.redirect-uri=${KAKAO_REDIRECT_URI} \ | |
| --cors.allowed-origins=http://locationcheckgo.netlify.app,http://localhost:8443,http://${{ secrets.SERVER_IP }}:8443 | |
| Restart=always | |
| RestartSec=10 | |
| [Install] | |
| WantedBy=multi-user.target | |
| EOF | |
| # 로그 디렉토리 생성 | |
| sudo mkdir -p /home/${{ secrets.SERVER_USER }}/logs | |
| sudo chown -R ${{ secrets.SERVER_USER }}:${{ secrets.SERVER_USER }} /home/${{ secrets.SERVER_USER }}/logs | |
| # Java 버전 확인 | |
| /usr/lib/jvm/java-17-openjdk-amd64/bin/java -version | |
| # 서비스 시작 | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable willgo | |
| sudo systemctl restart willgo | |
| sleep 3 | |
| sudo systemctl status willgo | |
| # 로그 확인 | |
| echo "Checking system logs..." | |
| sudo journalctl -u willgo -n 50 --no-pager |