feat : 이메일 인증 프론트 구현 및 연결 #137
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 테스트 자동화 분리 | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - dev | |
| paths: | |
| - 'src/**' | |
| - '.github/workflows/**' | |
| pull_request: | |
| branches: | |
| - main | |
| - dev | |
| paths: | |
| - 'src/**' | |
| - '.github/workflows/**' | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 리포지토리를 가져옵니다 | |
| uses: actions/checkout@v3 | |
| with: | |
| token: ${{ secrets.SUBMODULE_TOKEN }} | |
| submodules: recursive | |
| - name: JDK 21 설치 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| - name: Gradle 실행 권한 부여 | |
| run: chmod +x gradlew | |
| - name: Gradle 빌드 수행 | |
| env: | |
| KAKAO_CLIENT_ID: ${{ secrets.KAKAO_CLIENT_ID }} | |
| MAIL_USERNAME: ${{ secrets.MAIL_USERNAME }} | |
| MAIL_PASSWORD: ${{ secrets.MAIL_PASSWORD }} | |
| SECRET_KEY: ${{ secrets.SECRET_KEY }} | |
| run: ./gradlew clean assemble --info | |
| - name: 빌드 아티팩트 업로드 | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-artifact | |
| path: build/libs/ | |
| test: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| services: | |
| postgis_db: | |
| image: postgis/postgis:16-3.4 | |
| env: | |
| POSTGRES_USER: user | |
| POSTGRES_PASSWORD: password | |
| POSTGRES_DB: pinco | |
| ports: | |
| - 5432:5432 | |
| options: >- | |
| --health-cmd="pg_isready -U user -d pinco" | |
| --health-interval=10s | |
| --health-timeout=5s | |
| --health-retries=5 | |
| redis: | |
| image: redis:latest | |
| ports: | |
| - 6379:6379 | |
| options: >- | |
| --health-cmd="redis-cli ping" | |
| --health-interval=10s | |
| --health-timeout=5s | |
| --health-retries=5 | |
| steps: | |
| - name: 리포지토리를 가져옵니다 | |
| uses: actions/checkout@v3 | |
| with: | |
| token: ${{ secrets.SUBMODULE_TOKEN }} | |
| submodules: recursive | |
| - name: JDK 21 설치 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| - name: Gradle 실행 권한 부여 | |
| run: chmod +x gradlew | |
| - name: DB 준비 대기 (PostGIS) | |
| run: | | |
| echo "Waiting for PostGIS to be ready..." | |
| for i in {1..30}; do | |
| pg_isready -h localhost -U user -d pinco && echo "PostGIS is ready!" && exit 0 | |
| echo "Waiting for DB... ($i)" | |
| sleep 3 | |
| done | |
| echo "PostGIS connection timeout" && exit 1 | |
| - name: 환경변수 설정 파일 (.env.properties) 생성 및 서비스 설정 | |
| run: | | |
| echo "Generating .env.properties file..." | |
| # 1. Secrets 변수 주입 | |
| echo "jwt.secret.key='${{ secrets.JWT_SECRET_KEY }}'" >> .env.properties | |
| echo "kakao.client.id=${{ secrets.KAKAO_CLIENT_ID }}" >> .env.properties | |
| echo "mail.password='${{ secrets.MAIL_PASSWORD }}'" >> .env.properties | |
| echo "mail.username=${{ secrets.MAIL_USERNAME }}" >> .env.properties | |
| echo ".env.properties file created successfully." | |
| cat .env.properties | |
| - name: 테스트 실행 | |
| env: | |
| SPRING_DATASOURCE_URL: jdbc:postgresql://localhost:5432/pinco | |
| SPRING_DATASOURCE_USERNAME: user | |
| SPRING_DATASOURCE_PASSWORD: password | |
| SPRING_DATA_REDIS_HOST: localhost | |
| SPRING_DATA_REDIS_PORT: 6379 | |
| # 환경 변수 전달 (메일/카카오/시크릿 등) | |
| KAKAO_CLIENT_ID: ${{ secrets.KAKAO_CLIENT_ID }} | |
| MAIL_USERNAME: ${{ secrets.MAIL_USERNAME }} | |
| MAIL_PASSWORD: ${{ secrets.MAIL_PASSWORD }} | |
| SECRET_KEY: ${{ secrets.SECRET_KEY }} | |
| custom.jwt.secret: ${{ secrets.SECRET_KEY }} | |
| run: ./gradlew test --info | |
| - name: 테스트 결과를 PR에 코멘트로 등록 | |
| uses: EnricoMi/publish-unit-test-result-action@v1 | |
| if: always() | |
| with: | |
| files: '**/build/test-results/test/TEST-*.xml' | |
| - name: 테스트 실패 시 코드 라인에 Check 코멘트 등록 | |
| uses: mikepenz/action-junit-report@v3 | |
| if: always() | |
| with: | |
| report_paths: '**/build/test-results/test/TEST-*.xml' | |
| token: ${{ github.token }} |