Skip to content

♻️ refactor : 코드 리팩토링 #94

♻️ refactor : 코드 리팩토링

♻️ refactor : 코드 리팩토링 #94

Workflow file for this run

name: 핀하우스 테스트 CI 파이프라인
### develop으로 PR 올릴 때, 테스트 코드를 실행하여, 빌드 여부 및 테스트를 체크하는 로직을 수행한다.
on:
pull_request:
branches: [ "develop"]
jobs:
#1. 통합 테스트 용
test:
runs-on: ubuntu-22.04
services:
mysql:
image: mysql:8.0
ports:
- '3306:3306'
env:
MYSQL_DATABASE: pinhouse_test
MYSQL_USER: testuser
MYSQL_PASSWORD: testpass
MYSQL_ROOT_PASSWORD: root
redis:
image: redis:7.2.5
ports:
- '6379:6379'
mongo:
image: mongo:6.0
ports:
- 27017:27017
permissions:
contents: write
checks: write
pull-requests: write
steps:
# 1-1. repository checkout
- uses: actions/checkout@v4
# 1-2. jdk 환경 설치
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# 1-3. '*.yml' 파일 세팅
- name: application.yml 파일 설정
run: |
mkdir -p src/main/resources
echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application.yml
- name: application-dev.yml 설정
run: echo "${{ secrets.APPLICATION_DEV_YML }}" > ./src/main/resources/application-dev.yml
- name: application-oauth2.yml 설정
run: echo "${{ secrets.APPLICATION_OAUTH2_YML }}" > ./src/main/resources/application-oauth2.yml
- name: application-test.yml 설정
run: |
mkdir -p src/test/resources
echo "${{ secrets.APPLICATION_TEST_YML }}" > ./src/test/resources/application-test.yml
# 1-4. 성능 향상을 위한 Gradle 캐싱
- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-${{ runner.os }}
# 1-5. 테스트 컨테이너들 작동여부 체크
- name: MySQL 체크
run: |
until nc -z localhost 3306; do
echo "Waiting for MySQL..."
sleep 3
done
- name: Redis 체크
run: |
until nc -z localhost 6379; do
echo "Waiting for Redis..."
sleep 3
done
- name: MongoDB 체크
run: |
until nc -z localhost 27017; do
echo "Waiting for MongoDB..."
sleep 3
done
# 2. 빌드
- name: Build with Gradle Wrapper
run: ./gradlew clean build
# 3. JUnit 테스트 결과 게시
- name: Test 결과 출력
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
junit_files: '**/build/test-results/test/TEST-*.xml'
github_token: ${{ secrets.GITHUB_TOKEN }}