Skip to content

Merge pull request #55 from Lions-Forest/chore #19

Merge pull request #55 from Lions-Forest/chore

Merge pull request #55 from Lions-Forest/chore #19

Workflow file for this run

# 워크플로우의 이름
name: Spring Boot CI/CD with Gradle
# 워크플로우가 실행될 시점(이벤트)을 정의
on:
# dev 브랜치로 push 이벤트가 발생했을 때
push:
branches: [ "dev" ]
jobs:
# 'build-and-deploy'라는 이름의 Job 정의
build-and-deploy:
# 이 Job을 실행할 가상 머신 환경 (Ubuntu 최신 버전)
runs-on: ubuntu-latest
# Job 내부에서 실행될 단계(Step)들
steps:
# 1. 코드 체크아웃
- name: Checkout Repository
uses: actions/checkout@v4
# 2. JDK 17 설치
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# 3. Gradle 캐시 설정 (빌드 속도 향상)
- name: Cache Gradle packages
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# 4. gradlew 실행 권한 부여
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
# 5. Gradle로 빌드 (테스트 스킵을 원하면 -x test 추가)
- name: Build with Gradle
run: ./gradlew bootJar -x test
# =======================================================
# 5-1. (이 단계를 추가하세요!!!) 빌드 폴더 내용 확인
# =======================================================
- name: Check build/libs directory
run: |
echo "--- Contents of build/libs ---"
ls -l build/libs/
echo "------------------------------"
# =======================================================
# 6. (CD 시작) 빌드된 JAR 파일을 EC2로 전송
# =======================================================
- name: Copy JAR to EC2
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.EC2_HOST }} # (필수) GitHub Secret에서 가져옴
username: ${{ secrets.EC2_USERNAME }} # (필수) GitHub Secret에서 가져옴
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }} # (필수) GitHub Secret에서 가져옴
port: 22 # SSH 포트 (기본 22)
source: "build/libs/*.jar" # 로컬(GitHub Runner)의 .jar 파일 위치
target: "/home/ubuntu/server/jars" # 원격(EC2) 서버에 저장될 경로 및 이름
# =======================================================
# 7. (CD 완료) EC2에 접속하여 배포 스크립트 실행
# =======================================================
- name: Execute deployment script on EC2
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
script: |
echo "Starting deployment script..."
/home/ubuntu/server/deploy.sh # (경로 주의) EC2에 있는 스크립트 실행