Skip to content

fix: 카카오 설정 #351

fix: 카카오 설정

fix: 카카오 설정 #351

Workflow file for this run

# 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=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=default
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.config.import=optional:application-local.properties,optional:application-secret.properties
--spring.profiles.active=default \
--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 \
\
--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