Skip to content

Merge pull request #48 from HANA-IEUM/test/couponServiceimpl-44 #55

Merge pull request #48 from HANA-IEUM/test/couponServiceimpl-44

Merge pull request #48 from HANA-IEUM/test/couponServiceimpl-44 #55

Workflow file for this run

name: Deploy Spring Boot to EC2
on:
push:
branches: [dev]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# 1. GitHub Repository 체크아웃
- name: Checkout source code
uses: actions/checkout@v3
# 2. JDK 21 설정
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '21'
# 3. Gradle 빌드 (테스트 제외)
- name: Build with Gradle
run: |
chmod +x ./gradlew
./gradlew clean build -x test
# 4. 빌드된 JAR 파일 EC2로 복사
- name: Copy JAR to EC2
uses: appleboy/scp-action@v0.1.3
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
source: "build/libs/*.jar"
target: "/home/ubuntu/app"
strip_components: 2
# 5. EC2에서 애플리케이션 실행
- name: Run Spring Boot App on EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
echo " 기존 애플리케이션 종료 시도 (8080 포트)"
sudo lsof -t -i:8080 | xargs --no-run-if-empty sudo kill -9
sleep 3
echo "새 애플리케이션 실행"
cd /home/ubuntu/app
JAR_FILE=$(ls *.jar | grep -v 'plain' | head -n 1)
if [ -z "$JAR_FILE" ]; then
echo "JAR 파일을 찾을 수 없습니다"
exit 1
fi
echo "실행할 JAR 파일: $JAR_FILE"
# GitHub Secrets를 환경변수로 설정
export DB_URL="${{ secrets.DB_URL }}"
export DB_USERNAME="${{ secrets.DB_USERNAME }}"
export DB_PASSWORD="${{ secrets.DB_PASSWORD }}"
export JWT_SECRET="${{ secrets.JWT_SECRET }}"
export JWT_ACCESS_EXPIRATION="${{ secrets.JWT_ACCESS_EXPIRATION }}"
export JWT_REFRESH_EXPIRATION="${{ secrets.JWT_REFRESH_EXPIRATION }}"
export CORS_ALLOWED_ORIGINS="${{ secrets.CORS_ALLOWED_ORIGINS }}"
export SOLAPI_API_KEY="${{ secrets.SOLAPI_API_KEY }}"
export SOLAPI_API_SECRET="${{ secrets.SOLAPI_API_SECRET }}"
export SOLAPI_SENDER="${{ secrets.SOLAPI_SENDER }}"
export AWS_ACCESS_KEY_ID="${{ secrets.AWS_ACCESS_KEY_ID }}"
export AWS_SECRET_ACCESS_KEY="${{ secrets.AWS_SECRET_ACCESS_KEY }}"
nohup java -jar "$JAR_FILE" > app.log 2>&1 &
echo "애플리케이션 시작 대기 및 확인"
sleep 10
if pgrep -f "$JAR_FILE"; then
echo "애플리케이션이 성공적으로 시작되었습니다."
else
echo "애플리케이션 시작 실패. 최근 로그 확인:"
tail -50 app.log
exit 1
fi