Update deploy.yml #24
This file contains 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
name: CI/CD Pipeline | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
build-and-deploy: | |
runs-on: ubuntu-latest | |
env: | |
SPRING_PROFILES_ACTIVE: develop | |
steps: | |
# 1. 코드 체크아웃 (서브모듈 포함) | |
- name: 코드 체크아웃 (서브모듈 포함) | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
token: ${{ secrets.ACCESS_TOKEN }} | |
fetch-depth: 0 | |
# 2. 서브모듈 초기화 및 업데이트 | |
- name: 서브모듈 초기화 및 업데이트 | |
run: | | |
git submodule sync | |
git submodule update --init --recursive | |
- name: yaml 파일 복사 | |
run: | | |
mkdir -p src/main/resources | |
cp -r Componote-BE-Config/was/resources/* src/main/resources/ | |
# 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 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 -x test --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 | |
# EC2에 접속해 ~/app 디렉터리 생성 | |
ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "mkdir -p ~/app" | |
# app.jar를 ~/app/ 디렉터리로 복사 | |
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 | |
chmod +x componote-0.0.1-SNAPSHOT.jar | |
pkill -f 'java -jar' || true | |
nohup java -jar componote-0.0.1-SNAPSHOT.jar > app.log 2>&1 & | |
tail -f app.log | |
EOF | |