Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
9fb5eb4
feat: api-user BFF 전환 중간 커밋
unifolio0 Nov 3, 2025
9c57681
feat: 프로덕션 코드 컴파일 오류 해결
unifolio0 Nov 3, 2025
53e60a2
feat: 테스트 마이그레이션
unifolio0 Nov 3, 2025
5b8d3f8
feat: 테스트 마이그레이션
unifolio0 Nov 4, 2025
62493a8
feat: 주석 해제
unifolio0 Nov 4, 2025
f5c5787
feat:설정 파일 수정
unifolio0 Nov 4, 2025
f0add28
feat: contextId 추가
unifolio0 Nov 4, 2025
a18a8bd
feat: 검증 수정
unifolio0 Nov 4, 2025
16f21c1
chore: ci, cd 스크립트 수정
unifolio0 Nov 4, 2025
706c1a4
chore: 설정 파일 수정
unifolio0 Nov 4, 2025
1acd9b3
chore: 설정 파일 수정
unifolio0 Nov 4, 2025
37b1edd
chore: cd 추가
unifolio0 Nov 4, 2025
f462148
chore: 테스트 설정파일 수정
unifolio0 Nov 4, 2025
a2faf97
chore: CI 수정
unifolio0 Nov 4, 2025
051e6ad
chore: runner 이름 수정
unifolio0 Nov 4, 2025
84bd7b4
chore: 도커 파일 수정
unifolio0 Nov 5, 2025
8cef2a2
chore: cd 검증을 위한 트리거 수정
unifolio0 Nov 5, 2025
adb6de4
chore: 클래스 이름 통일
unifolio0 Nov 5, 2025
2eb86ac
chore: DTO 통합 작업
unifolio0 Nov 5, 2025
c515823
chore: DTO 통합
unifolio0 Nov 5, 2025
2783e1f
chore: DTO 통합
unifolio0 Nov 5, 2025
4ba0e30
chore: 테스트 수정
unifolio0 Nov 5, 2025
b9bc871
chore: flyway 도입
unifolio0 Nov 5, 2025
125694a
chore: 설정 파일 수정
unifolio0 Nov 5, 2025
206dbc0
chore: cd 시크릿 설정
unifolio0 Nov 6, 2025
ddddb7a
chore: 테스트용 데이터 베이스 설정 수정
unifolio0 Nov 6, 2025
fad4997
chore: cd 트리거 수정
unifolio0 Nov 6, 2025
393072a
chore: secret 위치 수정
unifolio0 Nov 6, 2025
e3dc8dd
chore: sql 수정
unifolio0 Nov 6, 2025
5648e75
chore: 스카마 및 도커 수정
unifolio0 Nov 6, 2025
92dae8f
chore: cd 트리거 수정
unifolio0 Nov 6, 2025
533dcb2
docs: 마이그레이션 계획 수정
unifolio0 Nov 6, 2025
eb747c5
docs: CLAUDE.md 수정
unifolio0 Nov 6, 2025
0dad413
test: flyway 마이그레이션 검증 테스트
unifolio0 Nov 6, 2025
bf3fb23
test: Import 수정
unifolio0 Nov 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@ on:
- "develop"
paths:
- 'api-owner/**'
- 'domain/**'
- 'domain-redis/**'
- 'common-client/**'
- 'infra-redis/**'
- 'infra-kafka/**'
- 'build.gradle'
- 'settings.gradle'
- '.github/workflows/Dev_Owner_CD.yml'
- '.github/workflows/Dev_API_Owner_CD.yml'

permissions:
contents: read
Expand Down Expand Up @@ -65,7 +66,7 @@ jobs:

deploy:
needs: build
runs-on: dev-owner
runs-on: dev-api-owner

steps:
- name: Download artifact file
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@ on:
- "develop"
paths:
- 'api-user/**'
- 'domain/**'
- 'domain-redis/**'
- 'common-client/**'
- 'infra-redis/**'
- 'infra-kafka/**'
- 'build.gradle'
- 'settings.gradle'
- '.github/workflows/Dev_User_CD.yml'
- '.github/workflows/Dev_API_User_CD.yml'

permissions:
contents: read
Expand Down Expand Up @@ -65,7 +66,7 @@ jobs:

deploy:
needs: build
runs-on: dev-user
runs-on: dev-api-user

steps:
- name: Download artifact file
Expand Down
55 changes: 48 additions & 7 deletions .github/workflows/Dev_CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,58 @@ jobs:
TEST_REPORT: true

services:
mysql:
mysql-reservation:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: ""
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_DATABASE: test
MYSQL_DATABASE: wellmeet_reservation
MYSQL_ROOT_PASSWORD: password
ports:
- 3306:3306
- 3310:3306
options: >-
--health-cmd="mysqladmin ping"
--health-cmd="mysqladmin ping -ppassword"
--health-interval=10s
--health-timeout=5s
--health-retries=3


mysql-member:
image: mysql:8.0
env:
MYSQL_DATABASE: wellmeet_member
MYSQL_ROOT_PASSWORD: password
ports:
- 3307:3306
options: >-
--health-cmd="mysqladmin ping -ppassword"
--health-interval=10s
--health-timeout=5s
--health-retries=3

mysql-owner:
image: mysql:8.0
env:
MYSQL_DATABASE: wellmeet_owner
MYSQL_ROOT_PASSWORD: password
ports:
- 3308:3306
options: >-
--health-cmd="mysqladmin ping -ppassword"
--health-interval=10s
--health-timeout=5s
--health-retries=3

mysql-restaurant:
image: mysql:8.0
env:
MYSQL_DATABASE: wellmeet_restaurant
MYSQL_ROOT_PASSWORD: password
ports:
- 3309:3306
options: >-
--health-cmd="mysqladmin ping -ppassword"
--health-interval=10s
--health-timeout=5s
--health-retries=3

redis:
image: redis:7-alpine
ports:
Expand Down Expand Up @@ -95,3 +133,6 @@ jobs:

- name: Run Tests With Gradle
run: ./gradlew test

- name: Validate Flyway Schema
run: ./gradlew :domain-reservation:test --tests FlywaySchemaValidationTest
78 changes: 78 additions & 0 deletions .github/workflows/Dev_Discovery_CD.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: dev-discovery-cd

on:
push:
branches:
- "develop"
paths:
- 'discovery-server/**'
- 'build.gradle'
- 'settings.gradle'
- '.github/workflows/Dev_Discovery_CD.yml'

permissions:
contents: read
checks: write
actions: read
pull-requests: write

jobs:
test:
uses: ./.github/workflows/Dev_CI.yml

build:
needs: test
runs-on: ubuntu-latest

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'

- name: Make gradlew executable
run: chmod +x gradlew

- name: bootJar with Gradle
run: ./gradlew :discovery-server:bootJar --info

- name: Change artifact file name
run: mv discovery-server/build/libs/*.jar discovery-server/build/libs/app.jar

- name: Upload artifact file
uses: actions/upload-artifact@v4
with:
name: app-artifact
path: ./discovery-server/build/libs/app.jar
if-no-files-found: error

- name: Upload deploy scripts
uses: actions/upload-artifact@v4
with:
name: deploy-scripts
path: ./scripts/dev/
if-no-files-found: error

deploy:
needs: build
runs-on: dev-discovery-server
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

자체 호스팅 러너 라벨을 명시적으로 구성해야 합니다.

dev-discovery-server 러너 라벨은 GitHub Actions의 표준 라벨이 아닙니다. 이것이 자체 호스팅 러너라면, .github/actionlint.yaml 파일에 구성하여 actionlint에 알려야 하며, 실제로 이 라벨이 배포 환경에서 사용 가능한지 확인해야 합니다.

.github/actionlint.yaml 파일이 존재하고 dev-discovery-server 라벨이 등록되어 있는지 확인해주세요:


🏁 Script executed:

#!/bin/bash
# Check if actionlint.yaml exists and contains the custom runner label
if [ -f .github/actionlint.yaml ]; then
  echo "actionlint.yaml exists:"
  cat .github/actionlint.yaml
else
  echo "actionlint.yaml does not exist"
fi

# Check for self-hosted runner configuration
grep -r "dev-discovery-server" .github/ || echo "Label not found in .github directory"

Length of output: 103


추가 검증이 필요합니다. 자체 호스팅 러너 구성에 대한 문서나 다른 워크플로우 파일이 있는지 확인하겠습니다.


🏁 Script executed:

#!/bin/bash
# Check for documentation about self-hosted runners
find .github -type f \( -name "*.md" -o -name "*.yaml" -o -name "*.yml" -o -name "*.json" \) -exec grep -l "self-hosted\|runner" {} \;

# Check all workflow files for custom runner usage
echo "=== All workflow files with runner configuration ==="
grep -r "runs-on:" .github/workflows/ --include="*.yml" --include="*.yaml"

# Check for any actionlint config (different name variations)
ls -la .github/ | grep -i action

Length of output: 1108


GitHub Actions 실행기 구성이 일관되게 누락되어 있습니다.

모든 마이크로서비스 워크플로우(dev-api-owner, dev-api-user, dev-discovery-server 등)가 커스텀 러너 라벨을 사용하지만, .github/actionlint.yaml 파일이 존재하지 않아 actionlint 검증이 실패합니다. 다음 중 하나를 수행하십시오:

  • .github/actionlint.yaml을 생성하여 모든 커스텀 러너 라벨을 등록하거나
  • actionlint 검증을 건너뛰도록 워크플로우를 구성하세요

이 커스텀 러너들이 GitHub 조직 설정에서 실제로 구성되어 있는지도 확인하십시오.

🧰 Tools
🪛 actionlint (1.7.8)

63-63: label "dev-discovery-server" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-11-arm", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-26-xlarge", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

🤖 Prompt for AI Agents
In .github/workflows/Dev_Discovery_CD.yml around line 63, the workflow uses a
custom runner label ("dev-discovery-server") but there is no
.github/actionlint.yaml to register custom runners which causes actionlint
failures; fix by either adding a .github/actionlint.yaml that lists all custom
runner labels used across workflows (dev-api-owner, dev-api-user,
dev-discovery-server, etc.) or modify this workflow to skip actionlint (e.g.,
set a workflow-level flag or add actionlint skip metadata) so validation ignores
custom runners; also verify those custom runner labels actually exist in the
GitHub org settings.


steps:
- name: Download artifact file
uses: actions/download-artifact@v4
with:
name: app-artifact
path: ~/app

- name: Download deploy scripts
uses: actions/download-artifact@v4
with:
name: deploy-scripts
path: ~/app/scripts

- name: Replace application to latest
run: sudo sh ~/app/scripts/replace-new-version.sh
84 changes: 84 additions & 0 deletions .github/workflows/Dev_Domain_Member_CD.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: dev-member-cd

on:
push:
branches:
- "develop"
paths:
- 'common-client/**'
- 'domain-member/**'
- 'domain-common/**'
- 'build.gradle'
- 'settings.gradle'
- '.github/workflows/Dev_Domain_Member_CD.yml'

permissions:
contents: read
checks: write
actions: read
pull-requests: write

jobs:
test:
uses: ./.github/workflows/Dev_CI.yml

build:
needs: test
runs-on: ubuntu-latest

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Setting dev-secret.yml
run: |
echo "${{ secrets.DOMAIN_MEMBER_DEV_SECRET_YML }}" > ./domain-member/src/main/resources/dev-secret.yml

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'

- name: Make gradlew executable
run: chmod +x gradlew

- name: bootJar with Gradle
run: ./gradlew :domain-member:bootJar --info

- name: Change artifact file name
run: mv domain-member/build/libs/*.jar domain-member/build/libs/app.jar

- name: Upload artifact file
uses: actions/upload-artifact@v4
with:
name: app-artifact
path: ./domain-member/build/libs/app.jar
if-no-files-found: error

- name: Upload deploy scripts
uses: actions/upload-artifact@v4
with:
name: deploy-scripts
path: ./scripts/dev/
if-no-files-found: error

deploy:
needs: build
runs-on: dev-domain-member

steps:
- name: Download artifact file
uses: actions/download-artifact@v4
with:
name: app-artifact
path: ~/app

- name: Download deploy scripts
uses: actions/download-artifact@v4
with:
name: deploy-scripts
path: ~/app/scripts

- name: Replace application to latest
run: sudo sh ~/app/scripts/replace-new-version.sh
84 changes: 84 additions & 0 deletions .github/workflows/Dev_Domain_Owner_CD.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: dev-owner-domain-cd

on:
push:
branches:
- "develop"
paths:
- 'common-client/**'
- 'domain-owner/**'
- 'domain-common/**'
- 'build.gradle'
- 'settings.gradle'
- '.github/workflows/Dev_Domain_Owner_CD.yml'

permissions:
contents: read
checks: write
actions: read
pull-requests: write

jobs:
test:
uses: ./.github/workflows/Dev_CI.yml

build:
needs: test
runs-on: ubuntu-latest

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Setting dev-secret.yml
run: |
echo "${{ secrets.DOMAIN_OWNER_DEV_SECRET_YML }}" > ./domain-owner/src/main/resources/dev-secret.yml

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'

- name: Make gradlew executable
run: chmod +x gradlew

- name: bootJar with Gradle
run: ./gradlew :domain-owner:bootJar --info

- name: Change artifact file name
run: mv domain-owner/build/libs/*.jar domain-owner/build/libs/app.jar

- name: Upload artifact file
uses: actions/upload-artifact@v4
with:
name: app-artifact
path: ./domain-owner/build/libs/app.jar
if-no-files-found: error

- name: Upload deploy scripts
uses: actions/upload-artifact@v4
with:
name: deploy-scripts
path: ./scripts/dev/
if-no-files-found: error

deploy:
needs: build
runs-on: dev-domain-owner

steps:
- name: Download artifact file
uses: actions/download-artifact@v4
with:
name: app-artifact
path: ~/app

- name: Download deploy scripts
uses: actions/download-artifact@v4
with:
name: deploy-scripts
path: ~/app/scripts

- name: Replace application to latest
run: sudo sh ~/app/scripts/replace-new-version.sh
Loading