From e748bec0ce9ff7a3a318599f948a81c813528b72 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Fri, 18 Jul 2025 21:03:42 +0900 Subject: [PATCH 01/14] =?UTF-8?q?fix:=20internal=20api=EC=97=90=EC=84=9C?= =?UTF-8?q?=20=EC=8B=A4=EC=88=98=EB=A1=9C=20=EB=B0=9C=EC=83=9D=ED=95=9C=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domain/local-docker-compose.yml | 1 + .../com/samhap/kokomen/notification/domain/Notification.java | 1 + internal/local-internal-docker-compose.yml | 1 + internal/run-local-internal.sh | 3 +-- .../samhap/kokomen/KokomenNotificationInternalApplication.java | 2 ++ .../controller/NotificationInternalController.java | 3 ++- 6 files changed, 8 insertions(+), 3 deletions(-) diff --git a/domain/local-docker-compose.yml b/domain/local-docker-compose.yml index d3e4d49..3a7e277 100644 --- a/domain/local-docker-compose.yml +++ b/domain/local-docker-compose.yml @@ -41,4 +41,5 @@ services: networks: kokomen-notification-network: + external: true driver: bridge diff --git a/domain/src/main/java/com/samhap/kokomen/notification/domain/Notification.java b/domain/src/main/java/com/samhap/kokomen/notification/domain/Notification.java index 7fe0350..42b63f7 100644 --- a/domain/src/main/java/com/samhap/kokomen/notification/domain/Notification.java +++ b/domain/src/main/java/com/samhap/kokomen/notification/domain/Notification.java @@ -35,5 +35,6 @@ public class Notification extends BaseEntity { public Notification(Long receiverMemberId, String content) { this.receiverMemberId = receiverMemberId; this.content = content; + this.notificationState = NotificationState.UNREAD; } } diff --git a/internal/local-internal-docker-compose.yml b/internal/local-internal-docker-compose.yml index 6e0a706..9715dd3 100644 --- a/internal/local-internal-docker-compose.yml +++ b/internal/local-internal-docker-compose.yml @@ -14,4 +14,5 @@ services: networks: kokomen-notification-network: + external: true driver: bridge diff --git a/internal/run-local-internal.sh b/internal/run-local-internal.sh index 80feb78..a8d0e21 100755 --- a/internal/run-local-internal.sh +++ b/internal/run-local-internal.sh @@ -23,11 +23,10 @@ fi # 도메인 도커 컴포즈 실행 docker compose -f ../domain/local-docker-compose.yml up -d -../gradlew clean build +../gradlew clean :internal:build # 로컬 도커 컴포즈 실행 # 실행 전에 헬스 체크 필요 cd ../internal docker rm -f kokomen-notification-local-internal docker compose -f local-internal-docker-compose.yml up --build -d - diff --git a/internal/src/main/java/com/samhap/kokomen/KokomenNotificationInternalApplication.java b/internal/src/main/java/com/samhap/kokomen/KokomenNotificationInternalApplication.java index 0cf578b..12333e7 100644 --- a/internal/src/main/java/com/samhap/kokomen/KokomenNotificationInternalApplication.java +++ b/internal/src/main/java/com/samhap/kokomen/KokomenNotificationInternalApplication.java @@ -2,7 +2,9 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +@EnableJpaAuditing @SpringBootApplication public class KokomenNotificationInternalApplication { diff --git a/internal/src/main/java/com/samhap/kokomen/notification/controller/NotificationInternalController.java b/internal/src/main/java/com/samhap/kokomen/notification/controller/NotificationInternalController.java index b8b1c1a..7caea12 100644 --- a/internal/src/main/java/com/samhap/kokomen/notification/controller/NotificationInternalController.java +++ b/internal/src/main/java/com/samhap/kokomen/notification/controller/NotificationInternalController.java @@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -16,7 +17,7 @@ public class NotificationInternalController { private final NotificationInternalService notificationInternalService; @PostMapping - public ResponseEntity saveNotification(NotificationRequest notificationRequest) { + public ResponseEntity saveNotification(@RequestBody NotificationRequest notificationRequest) { notificationInternalService.saveNotification(notificationRequest); return ResponseEntity.noContent().build(); } From 6ed506644bb534314ac2dbb73293b5b8155d1239 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sat, 19 Jul 2025 14:49:51 +0900 Subject: [PATCH 02/14] =?UTF-8?q?chore:=20ci-internal-test=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci-internal-test.yml | 50 ++++++++++++++++++++++++++ domain/build.gradle | 7 ++++ 2 files changed, 57 insertions(+) create mode 100644 .github/workflows/ci-internal-test.yml diff --git a/.github/workflows/ci-internal-test.yml b/.github/workflows/ci-internal-test.yml new file mode 100644 index 0000000..3e22efc --- /dev/null +++ b/.github/workflows/ci-internal-test.yml @@ -0,0 +1,50 @@ +name: CI INTERNAL TEST + +on: + pull_request: + branches: [ main, develop ] # TODO: develop-internal 브랜치로 변경 + +jobs: + build: + runs-on: ubuntu-latest + permissions: + checks: write + pull-requests: write + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'corretto' + java-version: '17' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Grant execute permission for run-test-mysql-redis.sh + run: chmod +x run-test-mysql-redis.sh + working-directory: ./domain + + - name: Run test mysql redis script + run: ./run-test-mysql-redis.sh + working-directory: ./domain + + - name: Test & Build internal only + run: ./gradlew :internal:build + + - name: Publish Unit Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + if: ${{ always() }} + with: + files: ${{ github.workspace }}/internal/build/test-results/**/*.xml + seconds_between_github_reads: 1.0 + seconds_between_github_writes: 3.0 + secondary_rate_limit_wait_seconds: 90.0 + + - name: When test fail, comment on that code + uses: mikepenz/action-junit-report@v3 + if: always() + with: + report_paths: ${{ github.workspace }}/internal/build/test-results/**/*.xml + token: ${{ github.token }} diff --git a/domain/build.gradle b/domain/build.gradle index cbb6c4a..c39fa71 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -49,3 +49,10 @@ jar { tasks.named('test') { useJUnitPlatform() } + +bootJar { + enabled = false +} +jar { + enabled = true +} From 6a40f80f1d60b9e22274c691d80a1cf356909617 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 01:29:34 +0900 Subject: [PATCH 03/14] =?UTF-8?q?chore:=20cd=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20dev=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20docker=20compose=EB=A5=BC=20=ED=95=9C=20=EA=B3=B3?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EA=B4=80=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-api-dev.yml | 93 ++++++++++++++++++++++++++ .github/workflows/cd-internal-dev.yml | 93 ++++++++++++++++++++++++++ .github/workflows/ci-internal-test.yml | 2 +- docker/dev/docker-compose-dev.yml | 65 ++++++++++++++++++ docker/dev/my.cnf | 4 ++ 5 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/cd-api-dev.yml create mode 100644 .github/workflows/cd-internal-dev.yml create mode 100644 docker/dev/docker-compose-dev.yml create mode 100644 docker/dev/my.cnf diff --git a/.github/workflows/cd-api-dev.yml b/.github/workflows/cd-api-dev.yml new file mode 100644 index 0000000..998cbcf --- /dev/null +++ b/.github/workflows/cd-api-dev.yml @@ -0,0 +1,93 @@ +name: CD API DEV + +on: + push: + branches: [ develop ] + +jobs: + detect-changes: + runs-on: ubuntu-latest + outputs: + api_changed: ${{ steps.filter.outputs.api }} + steps: + - uses: actions/checkout@v4 + - id: filter + uses: dorny/paths-filter@v3 + with: + filters: | + api: + - 'api/**' + + build-api: + needs: detect-changes + if: needs.detect-changes.outputs.api_changed == 'true' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'corretto' + java-version: '17' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Grant execute permission for run-test-mysql-redis.sh + run: chmod +x run-test-mysql-redis.sh + working-directory: ./domain + + - name: Run test mysql redis script + run: ./run-test-mysql-redis.sh + working-directory: ./domain + + - name: Test & Build api only + run: ./gradlew :api:build + + - name: Sign in Dockerhub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build the Docker image + run: docker build -f ./Dockerfile --platform linux/amd64 --no-cache -t samhap/kokomen-notification-api:dev . + working-directory: ./api + + - name: Push the Docker Image to Dockerhub + run: docker push samhap/kokomen-notification-api:dev + working-directory: ./api + + deploy-api: + needs: build-api + runs-on: [ self-hosted, dev-notification ] + steps: + - name: Stop existing container + run: sudo docker rm -f kokomen-notification-dev-api || true + + - name: Remove old API Docker image + run: | + if sudo docker images samhap/kokomen-notification-api:dev -q | grep -q .; then + sudo docker rmi -f samhap/kokomen-notification-api:dev || true + fi + + - name: pull docker compose yaml files + working-directory: /home/ubuntu + run: | + [ -d kokomen-notification ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-notification.git + cd kokomen-notification + git sparse-checkout init --cone + git fetch origin develop + git checkout develop + git sparse-checkout set docker + git pull origin develop + + - name: Docker Image pull + run: sudo docker pull samhap/kokomen-notification-api:dev + + - name: Docker run + working-directory: /home/ubuntu + run: | + export HOSTNAME=$(hostname) + cd kokomen-notification/docker + sudo -E docker compose -f dev-api-docker-compose.yml up -d kokomen-notification-dev-api diff --git a/.github/workflows/cd-internal-dev.yml b/.github/workflows/cd-internal-dev.yml new file mode 100644 index 0000000..67dfbad --- /dev/null +++ b/.github/workflows/cd-internal-dev.yml @@ -0,0 +1,93 @@ +name: CD INTERNAL DEV + +on: + push: + branches: [ develop ] + +jobs: + detect-changes: + runs-on: ubuntu-latest + outputs: + internal_changed: ${{ steps.filter.outputs.internal }} + steps: + - uses: actions/checkout@v4 + - id: filter + uses: dorny/paths-filter@v3 + with: + filters: | + internal: + - 'internal/**' + + build-internal: + needs: detect-changes + if: needs.detect-changes.outputs.internal_changed == 'true' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'corretto' + java-version: '17' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Grant execute permission for run-test-mysql-redis.sh + run: chmod +x run-test-mysql-redis.sh + working-directory: ./domain + + - name: Run test mysql redis script + run: ./run-test-mysql-redis.sh + working-directory: ./domain + + - name: Test & Build internal only + run: ./gradlew :internal:build + + - name: Sign in Dockerhub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build the Docker image + run: docker build -f ./Dockerfile --platform linux/amd64 --no-cache -t samhap/kokomen-notification-internal:dev . + working-directory: ./internal + + - name: Push the Docker Image to Dockerhub + run: docker push samhap/kokomen-notification-internal:dev + working-directory: ./internal + + deploy-internal: + needs: build-internal + runs-on: [ self-hosted, dev-notification ] + steps: + - name: Stop existing container + run: sudo docker rm -f kokomen-notification-dev-internal || true + + - name: Remove old INTERNAL Docker image + run: | + if sudo docker images samhap/kokomen-notification-internal:dev -q | grep -q .; then + sudo docker rmi -f samhap/kokomen-notification-internal:dev || true + fi + + - name: pull docker compose yaml files + working-directory: /home/ubuntu + run: | + [ -d kokomen-notification ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-notification.git + cd kokomen-notification + git sparse-checkout init --cone + git fetch origin develop + git checkout develop + git sparse-checkout set docker + git pull origin develop + + - name: Docker Image pull + run: sudo docker pull samhap/kokomen-notification-internal:dev + + - name: Docker run + working-directory: /home/ubuntu + run: | + export HOSTNAME=$(hostname) + cd kokomen-notification/docker + sudo -E docker compose -f dev-internal-docker-compose.yml up -d diff --git a/.github/workflows/ci-internal-test.yml b/.github/workflows/ci-internal-test.yml index 3e22efc..5837b65 100644 --- a/.github/workflows/ci-internal-test.yml +++ b/.github/workflows/ci-internal-test.yml @@ -2,7 +2,7 @@ name: CI INTERNAL TEST on: pull_request: - branches: [ main, develop ] # TODO: develop-internal 브랜치로 변경 + branches: [ main, develop ] jobs: build: diff --git a/docker/dev/docker-compose-dev.yml b/docker/dev/docker-compose-dev.yml new file mode 100644 index 0000000..160c86f --- /dev/null +++ b/docker/dev/docker-compose-dev.yml @@ -0,0 +1,65 @@ +services: + # ✅ Notification Internal Spring Application + kokomen-notification-dev-internal: + image: samhap/kokomen-dev-notification-internal:dev + container_name: kokomen-notification-dev-internal + restart: on-failure:3 + expose: + - 8080 + volumes: + - ./notification/internal/app/logs:/logs + environment: + TZ: Asia/Seoul + JAVA_TOOL_OPTIONS: -Duser.timezone=Asia/Seoul + HOSTNAME: ${HOSTNAME} + SPRING_PROFILES_ACTIVE: dev + networks: + - dev-kokomen-net + + kokomen-notification-mysql-dev: + image: mysql:8.4.5 + container_name: kokomen-notification-mysql-dev + command: + [ + "mysqld", + "--character-set-server=utf8mb4", + "--collation-server=utf8mb4_general_ci" + ] + volumes: + - notification-mysql-data:/var/lib/mysql + - notification-mysql-init:/docker-entrypoint-initdb.d + expose: + - 3306 + restart: always + environment: + TZ: Asia/Seoul + MYSQL_USER: ${SPRING_DATASOURCE_USERNAME_DEV} + MYSQL_PASSWORD: ${SPRING_DATASOURCE_PASSWORD_DEV} + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD_DEV} + MYSQL_DATABASE: kokomen-notification-dev + LANG: C.UTF-8 + MYSQL_INIT_CONNECT: "SET NAMES utf8mb4" + networks: + - dev-kokomen-net + + notification-mysql-dev-exporter: + image: prom/mysqld-exporter + container_name: notification-mysql-dev-exporter + restart: unless-stopped + environment: + DATA_SOURCE_NAME: "root:${MYSQL_ROOT_PASSWORD_DEV}@tcp(kokomen-notification-mysql-dev:3306)/" + TZ: Asia/Seoul + expose: + - 9104 + volumes: + - ./my.cnf:/.my.cnf + networks: + - dev-kokomen-net + +volumes: + notification-mysql-data: + +networks: + dev-kokomen-net: + external: true + driver: bridge diff --git a/docker/dev/my.cnf b/docker/dev/my.cnf new file mode 100644 index 0000000..8672866 --- /dev/null +++ b/docker/dev/my.cnf @@ -0,0 +1,4 @@ +[client] +user=root +password=root +host=kokomen-notification-mysql-dev From 9de916812b501fe3b0961625d7070f9b18fcc452 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 01:30:35 +0900 Subject: [PATCH 04/14] =?UTF-8?q?chore:=20cd=20=EA=B7=9C=EC=B9=99=20?= =?UTF-8?q?=EC=9E=84=EC=8B=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-internal-dev.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cd-internal-dev.yml b/.github/workflows/cd-internal-dev.yml index 67dfbad..a48368d 100644 --- a/.github/workflows/cd-internal-dev.yml +++ b/.github/workflows/cd-internal-dev.yml @@ -1,7 +1,7 @@ name: CD INTERNAL DEV on: - push: + pull_request: branches: [ develop ] jobs: @@ -77,10 +77,10 @@ jobs: [ -d kokomen-notification ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-notification.git cd kokomen-notification git sparse-checkout init --cone - git fetch origin develop - git checkout develop + git fetch origin feature/#2 + git checkout feature/#2 git sparse-checkout set docker - git pull origin develop + git pull origin feature/#2 - name: Docker Image pull run: sudo docker pull samhap/kokomen-notification-internal:dev From b13ee51a6d28d10aac82e443d11561d786864147 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 01:34:25 +0900 Subject: [PATCH 05/14] =?UTF-8?q?chore:=20cd-dev=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94=20=EB=8F=84=EC=BB=A4?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EC=A6=88=20=ED=8C=8C=EC=9D=BC=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-internal-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-internal-dev.yml b/.github/workflows/cd-internal-dev.yml index a48368d..21823cf 100644 --- a/.github/workflows/cd-internal-dev.yml +++ b/.github/workflows/cd-internal-dev.yml @@ -90,4 +90,4 @@ jobs: run: | export HOSTNAME=$(hostname) cd kokomen-notification/docker - sudo -E docker compose -f dev-internal-docker-compose.yml up -d + sudo -E docker compose -f dev-docker-compose.yml up -d From 4931eafae5d5c1eb5e3bcf46aa37140ae8c1419d Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 01:37:33 +0900 Subject: [PATCH 06/14] =?UTF-8?q?chore:=20cd-dev=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94=20=EB=8F=84=EC=BB=A4?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EC=A6=88=20=EA=B2=BD=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-internal-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-internal-dev.yml b/.github/workflows/cd-internal-dev.yml index 21823cf..f288dce 100644 --- a/.github/workflows/cd-internal-dev.yml +++ b/.github/workflows/cd-internal-dev.yml @@ -89,5 +89,5 @@ jobs: working-directory: /home/ubuntu run: | export HOSTNAME=$(hostname) - cd kokomen-notification/docker + cd kokomen-notification/docker/dev sudo -E docker compose -f dev-docker-compose.yml up -d From 6a65c48aba52614a47fa2c21bd4a89586922a877 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 01:40:42 +0900 Subject: [PATCH 07/14] =?UTF-8?q?chore:=20cd-dev=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94=20=EB=8F=84=EC=BB=A4?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EC=A6=88=20=ED=8C=8C=EC=9D=BC=EB=AA=85=20?= =?UTF-8?q?=EC=9E=AC=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-internal-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-internal-dev.yml b/.github/workflows/cd-internal-dev.yml index f288dce..9ae5ce4 100644 --- a/.github/workflows/cd-internal-dev.yml +++ b/.github/workflows/cd-internal-dev.yml @@ -90,4 +90,4 @@ jobs: run: | export HOSTNAME=$(hostname) cd kokomen-notification/docker/dev - sudo -E docker compose -f dev-docker-compose.yml up -d + sudo -E docker compose -f docker-compose-dev.yml up -d From e150069c845966e026e2e1b08d0292e42a595842 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 01:54:21 +0900 Subject: [PATCH 08/14] =?UTF-8?q?chore:=20cd-dev=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=ED=95=9C=20=EB=AC=B8=EC=A0=9C=EC=A0=90=20?= =?UTF-8?q?=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-internal-dev.yml | 5 +++++ docker/dev/docker-compose-dev.yml | 1 + domain/src/main/resources/application-domain.yml | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/.github/workflows/cd-internal-dev.yml b/.github/workflows/cd-internal-dev.yml index 9ae5ce4..0a5f646 100644 --- a/.github/workflows/cd-internal-dev.yml +++ b/.github/workflows/cd-internal-dev.yml @@ -87,6 +87,11 @@ jobs: - name: Docker run working-directory: /home/ubuntu + env: + MYSQL_ROOT_PASSWORD_DEV: ${{ secrets.MYSQL_ROOT_PASSWORD_DEV }} + SPRING_DATASOURCE_USERNAME_DEV: ${{ secrets.SPRING_DATASOURCE_USERNAME_DEV }} + SPRING_DATASOURCE_PASSWORD_DEV: ${{ secrets.SPRING_DATASOURCE_PASSWORD_DEV }} + SPRING_DATASOURCE_URL_DEV: ${{ secrets.SPRING_DATASOURCE_URL_DEV }} run: | export HOSTNAME=$(hostname) cd kokomen-notification/docker/dev diff --git a/docker/dev/docker-compose-dev.yml b/docker/dev/docker-compose-dev.yml index 160c86f..2edd68f 100644 --- a/docker/dev/docker-compose-dev.yml +++ b/docker/dev/docker-compose-dev.yml @@ -58,6 +58,7 @@ services: volumes: notification-mysql-data: + notification-mysql-init: networks: dev-kokomen-net: diff --git a/domain/src/main/resources/application-domain.yml b/domain/src/main/resources/application-domain.yml index b443166..1e73ec2 100644 --- a/domain/src/main/resources/application-domain.yml +++ b/domain/src/main/resources/application-domain.yml @@ -26,3 +26,19 @@ spring: hibernate: ddl-auto: validate +--- +# dev profile +spring: + config: + activate: + on-profile: dev + datasource: + url: jdbc:mysql://kokomen-notification-mysql-dev:3306/kokomen-notification-dev + username: ${SPRING_DATASOURCE_USERNAME_DEV} + password: ${SPRING_DATASOURCE_PASSWORD_DEV} + driver-class-name: com.mysql.cj.jdbc.Driver + jpa: + database: mysql + show-sql: false + hibernate: + ddl-auto: validate From 35f5834dbaddd1b68fcef9e48a969152f5cb6c89 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 02:01:39 +0900 Subject: [PATCH 09/14] =?UTF-8?q?chore:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=8F=84=EC=BB=A4=EC=9D=B4=EB=AF=B8=EC=A7=80?= =?UTF-8?q?=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/dev/docker-compose-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/dev/docker-compose-dev.yml b/docker/dev/docker-compose-dev.yml index 2edd68f..fc72ced 100644 --- a/docker/dev/docker-compose-dev.yml +++ b/docker/dev/docker-compose-dev.yml @@ -1,7 +1,7 @@ services: # ✅ Notification Internal Spring Application kokomen-notification-dev-internal: - image: samhap/kokomen-dev-notification-internal:dev + image: samhap/kokomen-notification-internal:dev container_name: kokomen-notification-dev-internal restart: on-failure:3 expose: From 4ef80abbc09193602d7cfb3cd99dade421da3bd5 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 12:39:25 +0900 Subject: [PATCH 10/14] =?UTF-8?q?chore:=20kokomen-notification-dev-interna?= =?UTF-8?q?l=EC=97=90=EC=84=9C=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=ED=99=98=EA=B2=BD=EB=B3=80=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/dev/docker-compose-dev.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/dev/docker-compose-dev.yml b/docker/dev/docker-compose-dev.yml index fc72ced..67f37bf 100644 --- a/docker/dev/docker-compose-dev.yml +++ b/docker/dev/docker-compose-dev.yml @@ -13,6 +13,8 @@ services: JAVA_TOOL_OPTIONS: -Duser.timezone=Asia/Seoul HOSTNAME: ${HOSTNAME} SPRING_PROFILES_ACTIVE: dev + SPRING_DATASOURCE_USERNAME_DEV: ${SPRING_DATASOURCE_USERNAME_DEV} + SPRING_DATASOURCE_PASSWORD_DEV: ${SPRING_DATASOURCE_PASSWORD_DEV} networks: - dev-kokomen-net From 6c2b6a0c001f004119ac95e90cf49a82b4d5398b Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 12:55:32 +0900 Subject: [PATCH 11/14] =?UTF-8?q?chore:=20ci=EB=8F=84=20=EA=B0=81=EC=9E=90?= =?UTF-8?q?=EC=9D=98=20=EA=B2=BD=EB=A1=9C=EC=97=90=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=EC=82=AC=ED=95=AD=EC=9D=B4=20=EC=9E=88=EC=9D=84=20=EB=95=8C?= =?UTF-8?q?=EB=A7=8C=20build=20=EC=88=98=ED=96=89=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci-api-test.yml | 65 ++++++++++++++++++++++++++ .github/workflows/ci-internal-test.yml | 15 ++++++ 2 files changed, 80 insertions(+) create mode 100644 .github/workflows/ci-api-test.yml diff --git a/.github/workflows/ci-api-test.yml b/.github/workflows/ci-api-test.yml new file mode 100644 index 0000000..bc931f2 --- /dev/null +++ b/.github/workflows/ci-api-test.yml @@ -0,0 +1,65 @@ +name: CI API TEST + +on: + pull_request: + branches: [ main, develop ] + +jobs: + detect-changes: + runs-on: ubuntu-latest + outputs: + api_changed: ${{ steps.filter.outputs.api }} + steps: + - uses: actions/checkout@v4 + - id: filter + uses: dorny/paths-filter@v3 + with: + filters: | + api: + - 'api/**' + + build: + needs: detect-changes + if: needs.detect-changes.outputs.api_changed == 'true' + runs-on: ubuntu-latest + permissions: + checks: write + pull-requests: write + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'corretto' + java-version: '17' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Grant execute permission for run-test-mysql-redis.sh + run: chmod +x run-test-mysql-redis.sh + working-directory: ./domain + + - name: Run test mysql redis script + run: ./run-test-mysql-redis.sh + working-directory: ./domain + + - name: Test & Build api only + run: ./gradlew :api:build + + - name: Publish Unit Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + if: ${{ always() }} + with: + files: ${{ github.workspace }}/api/build/test-results/**/*.xml + seconds_between_github_reads: 1.0 + seconds_between_github_writes: 3.0 + secondary_rate_limit_wait_seconds: 90.0 + + - name: When test fail, comment on that code + uses: mikepenz/action-junit-report@v3 + if: always() + with: + report_paths: ${{ github.workspace }}/api/build/test-results/**/*.xml + token: ${{ github.token }} \ No newline at end of file diff --git a/.github/workflows/ci-internal-test.yml b/.github/workflows/ci-internal-test.yml index 5837b65..f0707e8 100644 --- a/.github/workflows/ci-internal-test.yml +++ b/.github/workflows/ci-internal-test.yml @@ -5,7 +5,22 @@ on: branches: [ main, develop ] jobs: + detect-changes: + runs-on: ubuntu-latest + outputs: + internal_changed: ${{ steps.filter.outputs.internal }} + steps: + - uses: actions/checkout@v4 + - id: filter + uses: dorny/paths-filter@v3 + with: + filters: | + internal: + - 'internal/**' + build: + needs: detect-changes + if: needs.detect-changes.outputs.internal_changed == 'true' runs-on: ubuntu-latest permissions: checks: write From 41f50aa6615e25035b9c3f07d4e5fb3b103d0439 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 13:08:10 +0900 Subject: [PATCH 12/14] =?UTF-8?q?chore:=20cd-api-dev.yml=EC=9A=A9=EB=8F=84?= =?UTF-8?q?=20=EB=AF=B8=EB=A6=AC=20=EC=9E=91=EC=84=B1=20=EB=B0=8F=20cd-int?= =?UTF-8?q?ernal-dev.yml=EC=97=90=EC=84=9C=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-api-dev.yml | 10 +++++++--- .github/workflows/cd-internal-dev.yml | 13 ++++++------- docker/dev/docker-compose-dev.yml | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/.github/workflows/cd-api-dev.yml b/.github/workflows/cd-api-dev.yml index 998cbcf..17ce669 100644 --- a/.github/workflows/cd-api-dev.yml +++ b/.github/workflows/cd-api-dev.yml @@ -79,7 +79,7 @@ jobs: git sparse-checkout init --cone git fetch origin develop git checkout develop - git sparse-checkout set docker + git sparse-checkout set docker/dev git pull origin develop - name: Docker Image pull @@ -87,7 +87,11 @@ jobs: - name: Docker run working-directory: /home/ubuntu + env: + MYSQL_ROOT_PASSWORD_DEV: ${{ secrets.MYSQL_ROOT_PASSWORD_DEV }} + SPRING_DATASOURCE_USERNAME_DEV: ${{ secrets.SPRING_DATASOURCE_USERNAME_DEV }} + SPRING_DATASOURCE_PASSWORD_DEV: ${{ secrets.SPRING_DATASOURCE_PASSWORD_DEV }} run: | export HOSTNAME=$(hostname) - cd kokomen-notification/docker - sudo -E docker compose -f dev-api-docker-compose.yml up -d kokomen-notification-dev-api + cd kokomen-notification/docker/dev + sudo -E docker compose -f docker-compose-dev.yml up -d kokomen-notification-dev-api diff --git a/.github/workflows/cd-internal-dev.yml b/.github/workflows/cd-internal-dev.yml index 0a5f646..5ce5ec8 100644 --- a/.github/workflows/cd-internal-dev.yml +++ b/.github/workflows/cd-internal-dev.yml @@ -1,7 +1,7 @@ name: CD INTERNAL DEV on: - pull_request: + push: branches: [ develop ] jobs: @@ -77,10 +77,10 @@ jobs: [ -d kokomen-notification ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-notification.git cd kokomen-notification git sparse-checkout init --cone - git fetch origin feature/#2 - git checkout feature/#2 - git sparse-checkout set docker - git pull origin feature/#2 + git fetch origin develop + git checkout develop + git sparse-checkout set docker/dev + git pull origin develop - name: Docker Image pull run: sudo docker pull samhap/kokomen-notification-internal:dev @@ -91,8 +91,7 @@ jobs: MYSQL_ROOT_PASSWORD_DEV: ${{ secrets.MYSQL_ROOT_PASSWORD_DEV }} SPRING_DATASOURCE_USERNAME_DEV: ${{ secrets.SPRING_DATASOURCE_USERNAME_DEV }} SPRING_DATASOURCE_PASSWORD_DEV: ${{ secrets.SPRING_DATASOURCE_PASSWORD_DEV }} - SPRING_DATASOURCE_URL_DEV: ${{ secrets.SPRING_DATASOURCE_URL_DEV }} run: | export HOSTNAME=$(hostname) cd kokomen-notification/docker/dev - sudo -E docker compose -f docker-compose-dev.yml up -d + sudo -E docker compose -f docker-compose-dev.yml up -d kokomen-notification-dev-internal diff --git a/docker/dev/docker-compose-dev.yml b/docker/dev/docker-compose-dev.yml index 67f37bf..1e00031 100644 --- a/docker/dev/docker-compose-dev.yml +++ b/docker/dev/docker-compose-dev.yml @@ -18,6 +18,24 @@ services: networks: - dev-kokomen-net + kokomen-notification-dev-api: + image: samhap/kokomen-notification-api:dev + container_name: kokomen-notification-dev-api + restart: on-failure:3 + expose: + - 8080 + volumes: + - ./notification/api/app/logs:/logs + environment: + TZ: Asia/Seoul + JAVA_TOOL_OPTIONS: -Duser.timezone=Asia/Seoul + HOSTNAME: ${HOSTNAME} + SPRING_PROFILES_ACTIVE: dev + SPRING_DATASOURCE_USERNAME_DEV: ${SPRING_DATASOURCE_USERNAME_DEV} + SPRING_DATASOURCE_PASSWORD_DEV: ${SPRING_DATASOURCE_PASSWORD_DEV} + networks: + - dev-kokomen-net + kokomen-notification-mysql-dev: image: mysql:8.4.5 container_name: kokomen-notification-mysql-dev From 9b900b1675e13e4711bf09042eced2a9f077c27d Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Sun, 20 Jul 2025 13:20:08 +0900 Subject: [PATCH 13/14] =?UTF-8?q?chore:=20boorJar=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=EB=90=98=EB=8A=94=20=EC=84=A4=EC=A0=95=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domain/build.gradle | 7 ------- 1 file changed, 7 deletions(-) diff --git a/domain/build.gradle b/domain/build.gradle index c39fa71..cbb6c4a 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -49,10 +49,3 @@ jar { tasks.named('test') { useJUnitPlatform() } - -bootJar { - enabled = false -} -jar { - enabled = true -} From 7615f0e5d45e6b9c65421c91397cb388dbb43863 Mon Sep 17 00:00:00 2001 From: devhoya97 Date: Tue, 22 Jul 2025 16:48:41 +0900 Subject: [PATCH 14/14] =?UTF-8?q?style:=20=ED=8C=8C=EC=9D=BC=20=EB=81=9D?= =?UTF-8?q?=EC=97=90=20=EA=B0=9C=ED=96=89=20=EB=AC=B8=EC=9E=90=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci-api-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-api-test.yml b/.github/workflows/ci-api-test.yml index bc931f2..fcaded1 100644 --- a/.github/workflows/ci-api-test.yml +++ b/.github/workflows/ci-api-test.yml @@ -62,4 +62,4 @@ jobs: if: always() with: report_paths: ${{ github.workspace }}/api/build/test-results/**/*.xml - token: ${{ github.token }} \ No newline at end of file + token: ${{ github.token }}