Skip to content

FAST MAIN PUSH

FAST MAIN PUSH #537

Workflow file for this run

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