Skip to content

Update deploy.yml

Update deploy.yml #13

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
env:
SPRING_PROFILES_ACTIVE: test
DB_URL: jdbc:h2:mem:testdb
REDIS_HOST: localhost
steps:
# 1. 코드 체크아웃 (서브모듈 포함)
- name: 코드 체크아웃 (서브모듈 포함)
uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 0
# 2. 서브모듈 초기화 및 업데이트
- name: 서브모듈 초기화 및 업데이트
run: |
git submodule sync
git submodule update --init --recursive
# 3. 디스크 공간 확보
- name: 디스크 공간 확보
run: |
echo "Before cleanup:"
df -h
sudo rm -rf /usr/local/lib/android
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/share/boost
sudo rm -rf /usr/lib/jvm
sudo docker image prune -a -f
sudo rm -rf /opt/ghc
sudo rm -rf /usr/share/swift
echo "After cleanup:"
df -h
# 4. JDK 17 설정
- name: JDK 17 설정
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
# 5. Gradle 실행 권한 부여
- name: Gradle 실행 권한 부여
run: chmod +x gradlew
# 6. 프로젝트 클린
- name: 프로젝트 클린
run: ./gradlew clean --no-daemon
# 7. 프로젝트 빌드
- name: 프로젝트 빌드
run: ./gradlew build --no-daemon --refresh-dependencies -Dorg.gradle.daemon=false
# 8. SSH 키 설정 및 파일 전송 (SCP 사용)
- name: EC2 서버에 파일 전송 (SCP)
run: |
mkdir -p ~/.ssh
echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
scp -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa build/libs/*.jar ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:~/app/
# 9. EC2 서버에서 애플리케이션 재시작 (SSH 사용)
- name: SSH를 통한 EC2 배포 및 실행
run: |
ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
cd ~/app
java -jar app.jar
EOF