Merge pull request #18 from Wayble-Project/feature/wonjun #6
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 Pipeline | ||
| on: | ||
| push: | ||
| branches: [ develop ] # develop 브랜치에 push가 일어날 때 실행 | ||
| workflow_dispatch: | ||
| jobs: | ||
| build: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v3 # 저장소 코드 체크아웃 | ||
| - name: Set up JDK 17 # Java 개발 킷 설정 | ||
| uses: actions/setup-java@v3 | ||
| with: | ||
| distribution: 'temurin' | ||
| java-version: '17' | ||
| - name: Make application.yml # application.yml 파일 생성 (오류 방지용 mkdir 추가) | ||
| run: | | ||
| mkdir -p ./src/main/resources | ||
| echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application.yml | ||
| shell: bash | ||
| - name: Grant execute permission for gradlew # gradlew 실행 권한 부여 | ||
| run: chmod +x gradlew | ||
| - name: Build with Gradle # Gradle을 사용하여 프로젝트 빌드 | ||
| uses: gradle/gradle-build-action@v2 | ||
| with: | ||
| arguments: build | ||
| - name: Upload build artifact # 빌드된 아티팩트 업로드 | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: umc7thServer | ||
| path: build/libs/*.jar | ||
| deploy: | ||
| needs: build # build 작업이 성공적으로 완료된 후 실행 | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Download build artifact # 이전 단계에서 업로드한 아티팩트 다운로드 | ||
| uses: actions/download-artifact@v4 | ||
| with: | ||
| name: umc7thServer | ||
| path: build/libs/ | ||
| - name: Deploy to EC2 # EC2에 배포 | ||
| env: | ||
| EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }} | ||
| EC2_USERNAME: ${{ secrets.EC2_USERNAME }} | ||
| EC2_HOST: ${{ secrets.EC2_HOST }} | ||
| run: | | ||
| echo "$EC2_SSH_KEY" > private_key.pem | ||
| chmod 600 private_key.pem | ||
| jar_file=$(find build/libs -name '*.jar' ! -name '*plain.jar' | head -n 1) | ||
| scp -i private_key.pem -o StrictHostKeyChecking=no "$jar_file" $EC2_USERNAME@$EC2_HOST:/home/$EC2_USERNAME/umc7thServer.jar | ||
| ssh -i private_key.pem -o StrictHostKeyChecking=no $EC2_USERNAME@$EC2_HOST " | ||
| pgrep java | xargs -r kill -15 # 기존에 실행 중인 Java 프로세스 종료 | ||
| sleep 10 | ||
| nohup java -jar /home/$EC2_USERNAME/umc7thServer.jar > app.log 2>&1 & # 새 버전 애플리케이션 실행 | ||
| " | ||
| rm -f private_key.pem # 민감한 정보 삭제 | ||
| # name: CD - DEVELOP | ||
| # on: #이 워크플로우가 언제 실행될지 트리거를 정의함. | ||
| # pull_request: | ||
| # types : [closed] #누군가가 Pull request를 닫았을 때 실행됨. | ||
| # workflow_dispatch: #수동 실행도 가능하도록 | ||
| # jobs: #실제 실행할 작업을 정의 | ||
| # build: #작업 이름 | ||
| # runs-on: ubuntu-latest #OS환경 | ||
| # if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'develop' | ||
| # #닫힌 Pull Request 중에서, 병합된 것이고, 병합 대상 브랜치가 develop 브랜치일 경우에만 이 작업을 실행 | ||