From b6ba7d94e7498d92888ef11c2b152543d388fde4 Mon Sep 17 00:00:00 2001 From: namgigun Date: Sun, 5 Oct 2025 11:54:16 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Infra:=20=EB=8F=84=EC=BB=A4=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EC=A6=88=20=ED=99=98=EA=B2=BD=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MySQL 설정 추가 - redis command 설정 삭제 --- docker-compose.yml | 21 ++++++++++++++++++--- infra/terraform/main.tf | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f9b41937..a286b8fd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,29 @@ version: "3.9" +# 개발환경에서는 redis만 실행하셔도 무관합니다 services: redis: - image: redis:6.2 + image: redis:7 container_name: local-redis ports: - "6379:6379" volumes: - redis_data:/data - command: ["redis-server", "--appendonly", "yes"] + + # 운영환경용 (MySQL) + mysql: + image: mysql:8.0 + container_name: local-mysql + environment: + MYSQL_ROOT_PASSWORD: root_pass + MYSQL_DATABASE: testdb + MYSQL_USER: root_user + MYSQL_PASSWORD: root_pass + ports: + - "3306:3306" + volumes: + - mysql_data:/var/lib/mysql volumes: - redis_data: \ No newline at end of file + redis_data: + mysql_data: \ No newline at end of file diff --git a/infra/terraform/main.tf b/infra/terraform/main.tf index 5f633b54..fe7962dd 100644 --- a/infra/terraform/main.tf +++ b/infra/terraform/main.tf @@ -213,6 +213,7 @@ docker network create common # redis 설치 docker run -d \ --name redis_1 \ + --restart unless-stopped \ --network common \ -p 6379:6379 \ -e TZ=Asia/Seoul \ From 6238e6f43e431251db28bf51b5808a952132e9a1 Mon Sep 17 00:00:00 2001 From: namgigun Date: Sun, 5 Oct 2025 12:05:25 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Infra:=20CI=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit main 브랜치, dev 브랜치 분리 - main 브랜치, redis/Mysql 실행 후, 빌드 & 테스트 진행 - dev 브랜치, redis 실행 후, 빌드 & 테스트 진행 --- .github/workflows/backend-ci.yml | 41 ++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/.github/workflows/backend-ci.yml b/.github/workflows/backend-ci.yml index fa57a79f..e9599308 100644 --- a/.github/workflows/backend-ci.yml +++ b/.github/workflows/backend-ci.yml @@ -9,7 +9,11 @@ on: types: [opened, synchronize, reopened] jobs: - build-and-test: + # -------------------------- + # main 브랜치용 build & test + # -------------------------- + build-and-test-main: + if: github.base_ref == 'main' # main 브랜치로 PR이 들어올 때만 실행 runs-on: ubuntu-latest services: @@ -23,8 +27,9 @@ jobs: ports: - 3306:3306 env: - MYSQL_ROOT_PASSWORD: root + MYSQL_ROOT_PASSWORD: root_pass MYSQL_DATABASE: testdb + # MySQL 헬스체크, MySQL 실행 준비 중인 동안 스프링부트 실행을 방지 options: >- --health-cmd="mysqladmin ping -h localhost -p$MYSQL_ROOT_PASSWORD" --health-interval=10s @@ -52,5 +57,37 @@ jobs: run: ./gradlew clean build -x test # Test 실행 + - name: Run tests + run: ./gradlew test + + # -------------------------- + # dev 브랜치용 build & test + # -------------------------- + build-and-test-dev: + if: github.base_ref == 'dev' # dev 브랜치로 PR이 들어올 때만 실행 + runs-on: ubuntu-latest + + services: + redis: + image: redis:7 + ports: + - 6379:6379 + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Java 21 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '21' + + - name: Create .env file + run: echo "${{ secrets.DOT_ENV }}" > .env + + - name: Build project + run: ./gradlew clean build -x test + - name: Run tests run: ./gradlew test \ No newline at end of file