Merge pull request #29 from NET-ZERO-FitFit/develop #75
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: 픽픽 CI/CD 배포 | |
| # 워크플로우가 언제 실행될지 정의하는 트리거 | |
| on: | |
| # main 브랜치에 push 이벤트가 발생했을 때 실행 | |
| push: | |
| branches: [ "main" ] | |
| # 실행될 작업(Job)들을 정의 | |
| jobs: | |
| # '빌드와 배포' 작업 | |
| build-and-deploy: | |
| # 이 작업이 실행될 가상 머신의 종류 (최신 우분투) | |
| runs-on: ubuntu-latest | |
| # 작업 내에서 순서대로 실행될 단계(Step)들 | |
| steps: | |
| # 1. 소스 코드 체크아웃 | |
| - name: 소스 코드 체크아웃 | |
| uses: actions/checkout@v4 | |
| # 2. JDK 17 설치 | |
| - name: JDK 17 설치 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # 3. Gradle 캐시 설정 | |
| # 매번 Gradle 의존성 받을 필요 없어 빌드 속도 빨라짐 | |
| - name: Gradle 캐시 설정 | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.gradle/caches | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| # 4. gradlew 실행 권한 부여 | |
| - name: gradlew 실행 권한 부여 | |
| run: chmod +x ./gradlew | |
| # 5. Gradle로 빌드하기 | |
| - name: Gradle로 빌드하기 | |
| run: ./gradlew bootJar | |
| # 6. EC2에 배포 스크립트와 JAR 파일 업로드 | |
| - name: EC2에 파일 업로드 | |
| uses: appleboy/scp-action@master | |
| with: | |
| host: 3.39.139.208 | |
| username: ubuntu | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| source: "build/libs/*.jar,deploy.sh" # .jar 파일과 deploy.sh 파일을 함께 업로드 | |
| target: "/home/ubuntu/app" | |
| # 7. EC2에서 배포 스크립트 실행 | |
| - name: EC2에서 배포 스크립트 실행 | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: 3.39.139.208 # EC2 퍼블릿 IP | |
| username: ubuntu | |
| key: ${{ secrets.EC2_SSH_KEY }} | |
| script: | | |
| cd /home/ubuntu/app | |
| chmod +x deploy.sh # 스크립트 실행 권한 부여 | |
| sudo ./deploy.sh # 스크립트 실행 |