FAST MAIN PUSH #537
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 & Deploy Pipeline | |
| # 1. 이벤트 설정 | |
| on: | |
| # PR 요청이 들어올 때 빌드와 테스트 실행 | |
| pull_request: | |
| branches: | |
| - main # main 브랜치로의 PR일 때 실행 | |
| - develop | |
| types: # opened, synchronize, reopened를 추가하여 PR이 열리거나 업데이트될 때 작업이 실행 | |
| - opened | |
| - synchronize | |
| - reopened | |
| # develop 브랜치에 push가 되면 실행 | |
| push: | |
| branches: | |
| - develop | |
| # 2. 빌드 및 테스트 잡 | |
| jobs: | |
| build-and-test: | |
| runs-on: ubuntu-latest | |
| env: | |
| EMAIL_USERNAME: ${{ secrets.EMAIL_USERNAME }} | |
| EMAIL_PASSWORD: ${{ secrets.EMAIL_PASSWORD }} | |
| EMAIL_TITLE: ${{ secrets.EMAIL_TITLE }} | |
| EMAIL_CONTENT_TEMPLATE: ${{ secrets.EMAIL_CONTENT_TEMPLATE }} | |
| SERVICE_NAME: ${{ secrets.SERVICE_NAME }} | |
| AWS_S3_ACCESSKEY: ${{ secrets.AWS_S3_ACCESSKEY }} | |
| AWS_S3_SECRETKEY: ${{ secrets.AWS_S3_SECRETKEY }} | |
| AWS_S3_BUKET_NAME: ${{ secrets.AWS_S3_BUKET_NAME }} | |
| AWS_S3_REGION: ${{ secrets.AWS_S3_REGION }} | |
| VC_URL: ${{ secrets.VC_URL }} | |
| VC_APIKEY: ${{ secrets.VC_APIKEY }} | |
| AWS_SQS_ACCESS_KEY_ID: ${{ secrets.AWS_SQS_ACCESS_KEY_ID }} | |
| AWS_SQS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SQS_SECRET_ACCESS_KEY }} | |
| AWS_SQS_QUEUE_URL: ${{ secrets.AWS_SQS_QUEUE_URL }} | |
| AWS_SQS_VIRTUAL_QUEUE_NAME: ${{ secrets.AWS_SQS_VIRTUAL_QUEUE_NAME }} | |
| permissions: | |
| pull-requests: write # PR에 댓글, 체크 실행을 할 수 있는 권한 | |
| checks: write # 체크 결과를 기록할 권한 | |
| actions: read # GitHub Actions의 정보를 읽을 수 있는 권한 | |
| steps: | |
| # 코드 체크아웃 | |
| - name: Check out code | |
| uses: actions/checkout@v4 | |
| # JDK 설치 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # Gradle 의존성 캐시 설정 | |
| - name: Cache Gradle dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.gradle/caches | |
| key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| ${{ runner.os }}-gradle- | |
| # Gradle Wrapper 권한 부여 | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| # gradlew 파일 실행권한 설정 | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x ./gradlew | |
| shell: bash | |
| - name: Create JSON Config File | |
| env: | |
| TTS_JSON_CONTENT: ${{ secrets.TTS_JSON }} | |
| run: | | |
| echo "${TTS_JSON_CONTENT}" > src/main/resources/tts.json | |
| echo $TTS_JSON_CONTENT | |
| # 빌드 및 테스트 실행 | |
| - name: Build and Test | |
| run: ./gradlew build | |
| # Gradle Test를 실행한다 | |
| - name: Test with Gradle | |
| run: ./gradlew --info test | |
| # Test 후 Report 생성 | |
| - name: Publish Test Results | |
| uses: EnricoMi/publish-unit-test-result-action@v2 | |
| if: always() | |
| with: | |
| junit_files: '**/build/test-results/test/TEST-*.xml' | |
| - name: Lint Checks | |
| run: ./gradlew check | |
| # # 3. develop에서 main으로 자동 배포 작업 | |
| # deploy-to-main: | |
| # # develop 브랜치에 push될 때만 실행 | |
| # if: github.event_name == 'push' && github.ref == 'refs/heads/develop' | |
| # runs-on: ubuntu-latest | |
| # needs: build-and-test # 빌드와 테스트가 완료된 후에 실행 | |
| # steps: | |
| # # 코드 체크아웃 | |
| # - name: Check out code | |
| # uses: actions/checkout@v3 | |
| # - name: Configure git | |
| # run: | | |
| # git config --global user.name "${{ github.actor }}" | |
| # git config --global user.email "${{ github.actor }}@users.noreply.github.com" | |
| # # main 브랜치로 병합 | |
| # - name: Merge develop to main | |
| # run: | | |
| # git remote update | |
| # git checkout main | |
| # git config pull.rebase true | |
| # git pull origin main # 최신 상태로 동기화 | |
| # git pull origin develop --allow-unrelated-histories | |
| # git rebase --skip | |
| # # 병합 결과를 main 브랜치에 푸시 | |
| # - name: Push to main | |
| # run: | | |
| # git push origin main |