Skip to content

Merge pull request #29 from 2024-ITEC0401/develop #18

Merge pull request #29 from 2024-ITEC0401/develop

Merge pull request #29 from 2024-ITEC0401/develop #18

Workflow file for this run

name: Deploy Spring Boot to AWS EC2
on:
push:
branches:
- main # main 브랜치에 push할 때 트리거
pull_request:
branches:
- main # main 브랜치에 PR이 머지될 때 트리거
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 1. 리포지토리 체크아웃
- name: Check out the code
uses: actions/checkout@v2
# 2. JDK 17 설치
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
java-version: '17' # 설치할 Java 버전
distribution: 'temurin' # Temurin 배포판 사용
cache: gradle # Gradle 캐시 활성화로 빌드 속도 개선
# 3. Gradle 빌드
- name: Build with Gradle
run: cd ./backend && ./gradlew clean bootjar
# 4. EC2 서버에 SSH로 연결하여 배포
- name: Deploy to EC2
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.AWS_EC2_HOST }}
username: ${{ secrets.AWS_EC2_USER }}
key: ${{ secrets.AWS_SSH_KEY }}
script: |
# 현재 실행 중인 애플리케이션 종료
PID=$(pgrep -f 'java -jar' || true)
if [ -n "$PID" ]; then
kill -9 $PID
fi
# JAR 파일 업로드 및 실행
rm -rf app || true
mkdir app
scp -o StrictHostKeyChecking=no -r backend/build/libs/*.jar ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }}:~/app/app.jar
# 환경 변수로 RDS 설정을 전달하며 애플리케이션 실행
nohup java -Xmx512m -jar ~/app/app.jar \
--spring.datasource.url=jdbc:mysql://${RDS_HOST}:${RDS_PORT}/${RDS_DB_NAME} \
--spring.datasource.username=${RDS_USERNAME} \
--spring.datasource.password=${RDS_PASSWORD} > /dev/null 2>&1 &