Skip to content

Update deploy.yml

Update deploy.yml #27

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: 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
git submodule update --remote
- 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 -n 50 app.log
EOF