Merge pull request #55 from Lions-Forest/chore #19
This file contains hidden or 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: 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에 있는 스크립트 실행 |