Skip to content

chore: cicd 환경 스키마, 데이터 init 및 문서화 작업 step 추가 #40

chore: cicd 환경 스키마, 데이터 init 및 문서화 작업 step 추가

chore: cicd 환경 스키마, 데이터 init 및 문서화 작업 step 추가 #40

name: develop pull request Check and Test
on:
pull_request:
branches: [ "develop" ]
jobs:
test:
runs-on: ubuntu-latest
steps:
# 체크아웃
- name: Checkout
uses: actions/checkout@v4
# JDK 17 세팅
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# 테스트 환경에서 필요한 컨테이너 실행 (redis, postgres)
- name: Run Containers
run: docker compose -f ./docker-compose-test.yml up -d
# 테스트 환경에서 필요한 스키마, 데이터 등록
- name: Apply Schema and Data
env:
TEST_POSTGRES_CONTAINER_NAME: "${{ github.event.repository.name }}-postgres-1"
TEST_POSTGRES_USER: test
TEST_POSTGRES_DB: ftm_test_db
run: |
echo "⏳ Waiting for PostgreSQL to be ready..."
until docker exec -i $TEST_POSTGRES_CONTAINER_NAME pg_isready -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB; do
echo "PostgreSQL is not ready yet. Retrying in 3 seconds..."
sleep 3
done
echo "✅ PostgreSQL is ready!"
echo "${{ secrets.SCHEMA_SQL }}" > test_schema.sql
docker cp test_schema.sql $TEST_POSTGRES_CONTAINER_NAME:/test_schema.sql
docker exec -i $TEST_POSTGRES_CONTAINER_NAME psql -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB -f /test_schema.sql
echo "${{ secrets.DATA_SQL }}" > test_data.sql
docker cp test_data.sql $TEST_POSTGRES_CONTAINER_NAME:/test_data.sql
docker exec -i $TEST_POSTGRES_CONTAINER_NAME psql -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB -f /test_data.sql
# 스키마, 데이터 테스트
- name: Test Schema
env:
TEST_POSTGRES_CONTAINER_NAME: "${{ github.event.repository.name }}-postgres-1"
TEST_POSTGRES_USER: test
TEST_POSTGRES_DB: ftm_test_db
run: |
docker exec -i $TEST_POSTGRES_CONTAINER_NAME psql -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB -c "\dt"
docker exec -i $TEST_POSTGRES_CONTAINER_NAME psql -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB -c "SELECT * FROM grooming_test_question;"
# Gradlew 실행 권한 허용
- name: Grant Execute Permission for Gradlew
run: chmod +x ./gradlew
# .env 파일 생성
- name: Load secrets into .env file
run: |
echo "${{ secrets.ENV }}" >> .env
# Gradle setup, check(코드 품질 관리, 테스트) 실행
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
arguments: check
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }}