Skip to content

feat : 이메일 인증 프론트 구현 및 연결 #137

feat : 이메일 인증 프론트 구현 및 연결

feat : 이메일 인증 프론트 구현 및 연결 #137

Workflow file for this run

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 }}