From daa6d35af92e00341688c42b0ec21d1c61bacc8c Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Thu, 23 Jul 2026 01:13:56 +0900 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20DB=20Neon=20=EC=9D=B4=EC=A0=84=20?= =?UTF-8?q?=EB=B0=8F=20=EB=A0=88=ED=8F=AC=EB=AA=85=20=EC=A0=84=ED=99=98?= =?UTF-8?q?=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EB=B0=B0=ED=8F=AC=20=EA=B5=AC?= =?UTF-8?q?=EC=84=B1=20=EC=A0=95=EB=B9=84=20-=20docker-compose.prod?= =?UTF-8?q?=EC=97=90=EC=84=9C=20postgres=20=EC=A0=9C=EA=B1=B0,=20app?= =?UTF-8?q?=EB=A7=8C=20=EA=B8=B0=EB=8F=99=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20(DB=EB=8A=94=20Neon=20=EC=99=B8=EB=B6=80?= =?UTF-8?q?=20=EC=97=B0=EA=B2=B0)=20-=20DB=5FURL=20=ED=99=98=EA=B2=BD?= =?UTF-8?q?=EB=B3=80=EC=88=98=20=EA=B8=B0=EB=B0=98=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=A0=84=ED=99=98,=20CD=EC=9D=98=20schema.sql=20=EB=B6=80?= =?UTF-8?q?=ED=8A=B8=EC=8A=A4=ED=8A=B8=EB=9E=A9=20=EC=A0=9C=EA=B1=B0=20-?= =?UTF-8?q?=20git=20remote/submodule=20=EB=B0=8F=20=EB=8F=84=EC=BB=A4=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=EB=AA=85=EC=9D=84=20api=20/=20api-c?= =?UTF-8?q?onfig=20=EB=A1=9C=20=EC=9E=AC=EC=97=B0=EA=B2=B0=20-=20CI=20?= =?UTF-8?q?=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C=EC=9A=B0(develop/main)=20c?= =?UTF-8?q?i.yml=20=ED=95=98=EB=82=98=EB=A1=9C=20=ED=86=B5=ED=95=A9,=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=EA=B2=BD=EB=A1=9C=20~/maggom-api=20?= =?UTF-8?q?=EB=A1=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-prod.yml | 31 +++++++------------ .github/workflows/ci-dev.yml | 36 ----------------------- .github/workflows/{ci-prod.yml => ci.yml} | 4 +-- .gitmodules | 2 +- infra/docker-compose.prod.yml | 26 +++------------- settings.gradle.kts | 2 +- 6 files changed, 18 insertions(+), 83 deletions(-) delete mode 100644 .github/workflows/ci-dev.yml rename .github/workflows/{ci-prod.yml => ci.yml} (95%) diff --git a/.github/workflows/cd-prod.yml b/.github/workflows/cd-prod.yml index f5b56f2..5ade0d5 100644 --- a/.github/workflows/cd-prod.yml +++ b/.github/workflows/cd-prod.yml @@ -1,8 +1,8 @@ -name: CD (main) +name: CD Prod on: workflow_run: - workflows: [ "CI (main)" ] + workflows: [ "CI" ] types: [ completed ] branches: [ main ] @@ -54,7 +54,7 @@ jobs: context: . file: infra/Dockerfile.prod push: true - tags: ghcr.io/ma-ggom/backend:latest + tags: ghcr.io/ma-ggom/api:latest - name: Get GitHub Actions IP id: ip @@ -77,8 +77,8 @@ jobs: host: ${{ secrets.EC2_HOST }} username: ubuntu key: ${{ secrets.EC2_SSH_KEY }} - source: infra/docker-compose.prod.yml,infra/sql/schema.sql - target: ~/maggom + source: infra/docker-compose.prod.yml + target: ~/maggom-api strip_components: 1 - name: Deploy to EC2 @@ -88,10 +88,10 @@ jobs: username: ubuntu key: ${{ secrets.EC2_SSH_KEY }} script: | - mkdir -p ~/maggom + mkdir -p ~/maggom-api - cat > ~/maggom/.env << 'EOF' - DB_NAME=${{ secrets.DB_NAME }} + cat > ~/maggom-api/.env << 'EOF' + DB_URL=${{ secrets.DB_URL }} DB_USERNAME=${{ secrets.DB_USERNAME }} DB_PASSWORD=${{ secrets.DB_PASSWORD }} JWT_SECRET=${{ secrets.JWT_SECRET }} @@ -102,21 +102,10 @@ jobs: EOF echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin - docker pull ghcr.io/ma-ggom/backend:latest + docker pull ghcr.io/ma-ggom/api:latest - cd ~/maggom + cd ~/maggom-api docker compose -f docker-compose.prod.yml --env-file .env down - docker compose -f docker-compose.prod.yml --env-file .env up -d postgres - sleep 5 - - # 테이블 없으면 schema.sql 실행 (최초 배포 시 1회) - source .env - TABLE_EXISTS=$(docker exec maggom-postgres psql -U $DB_USERNAME -d $DB_NAME -tAc "SELECT 1 FROM information_schema.tables WHERE table_name='marathon_event'" 2>/dev/null) - if [ "$TABLE_EXISTS" != "1" ]; then - docker cp sql/schema.sql maggom-postgres:/schema.sql - docker exec maggom-postgres psql -U $DB_USERNAME -d $DB_NAME -f /schema.sql - fi - docker compose -f docker-compose.prod.yml --env-file .env up -d - name: Remove IP from Security Group diff --git a/.github/workflows/ci-dev.yml b/.github/workflows/ci-dev.yml deleted file mode 100644 index 0bd42ab..0000000 --- a/.github/workflows/ci-dev.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: CI (develop) - -on: - push: - branches: [ develop ] - -jobs: - ci: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.3.1 - with: - submodules: true - token: ${{ secrets.SUBMODULE_PAT }} - - - name: Set up JDK 21 - uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4.8.0 - with: - java-version: '21' - distribution: 'temurin' - - - name: Cache Gradle - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: gradle-${{ hashFiles('**/*.gradle.kts') }} - restore-keys: gradle- - - - name: Build & Test - run: | - chmod +x gradlew - ./gradlew :app:build diff --git a/.github/workflows/ci-prod.yml b/.github/workflows/ci.yml similarity index 95% rename from .github/workflows/ci-prod.yml rename to .github/workflows/ci.yml index 95cedfe..088165f 100644 --- a/.github/workflows/ci-prod.yml +++ b/.github/workflows/ci.yml @@ -1,8 +1,8 @@ -name: CI (main) +name: CI on: push: - branches: [ main ] + branches: [ develop, main ] jobs: ci: diff --git a/.gitmodules b/.gitmodules index 69e3f9d..d1bdb50 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "app/config"] path = app/config - url = https://github.com/Ma-GGom/backend-config.git + url = https://github.com/Ma-GGom/api-config.git diff --git a/infra/docker-compose.prod.yml b/infra/docker-compose.prod.yml index 084cddd..694a9bd 100644 --- a/infra/docker-compose.prod.yml +++ b/infra/docker-compose.prod.yml @@ -1,26 +1,13 @@ -name: maggom-server +name: maggom-api services: - postgres: - image: postgres:17 - container_name: maggom-postgres - environment: - POSTGRES_DB: ${DB_NAME} - POSTGRES_USER: ${DB_USERNAME} - POSTGRES_PASSWORD: ${DB_PASSWORD} - ports: - - "5432:5432" - volumes: - - maggom-postgres-data:/var/lib/postgresql/data - restart: always - app: - image: ghcr.io/ma-ggom/backend:latest + image: ghcr.io/ma-ggom/api:latest container_name: maggom-app environment: SPRING_PROFILES_ACTIVE: prod TZ: Asia/Seoul - DB_URL: jdbc:postgresql://postgres:5432/${DB_NAME} + DB_URL: ${DB_URL} DB_USERNAME: ${DB_USERNAME} DB_PASSWORD: ${DB_PASSWORD} JWT_SECRET: ${JWT_SECRET} @@ -32,9 +19,4 @@ services: - "8080:8080" volumes: - ../logs/spring:/logs - depends_on: - - postgres - restart: always - -volumes: - maggom-postgres-data: + restart: always \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index bb6fc64..eece45f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,4 @@ -rootProject.name = "maggom" +rootProject.name = "maggom-api" include("app") include("admin") From f4c7d9900634e644b903fe89a6a879d3af335a65 Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Thu, 23 Jul 2026 02:02:56 +0900 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20DB=20Neon=20=EC=9D=B4=EC=A0=84=20?= =?UTF-8?q?=EB=B0=8F=20=EB=A0=88=ED=8F=AC=EB=AA=85(api)=20=EC=A0=84?= =?UTF-8?q?=ED=99=98=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EB=B0=B0=ED=8F=AC=20?= =?UTF-8?q?=EA=B5=AC=EC=84=B1=20=EC=A0=95=EB=B9=84=20-=20docker-compose.pr?= =?UTF-8?q?od=20postgres=20=EC=A0=9C=EA=B1=B0,=20app=EB=A7=8C=20=EA=B8=B0?= =?UTF-8?q?=EB=8F=99=20(DB=EB=8A=94=20Neon=20=EC=99=B8=EB=B6=80=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0,=20DB=5FURL=20=EA=B8=B0=EB=B0=98)=20-=20git?= =?UTF-8?q?=20remote/submodule=20=EB=B0=8F=20=EB=8F=84=EC=BB=A4=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=EB=AA=85=EC=9D=84=20api=20/=20api-c?= =?UTF-8?q?onfig=20=EB=A1=9C=20=EC=9E=AC=EC=97=B0=EA=B2=B0=20-=20CI=20?= =?UTF-8?q?=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C=EC=9A=B0=20ci.yml=20?= =?UTF-8?q?=ED=95=98=EB=82=98=EB=A1=9C=20=ED=86=B5=ED=95=A9,=20CD=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=EA=B2=BD=EB=A1=9C=20~/maggom-api=20?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20-=20=EB=B0=B0=ED=8F=AC=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=A9=80=ED=8B=B0=EC=95=84?= =?UTF-8?q?=EC=B9=98(amd64/arm64)=20=EB=B9=8C=EB=93=9C=EB=A1=9C=20?= =?UTF-8?q?=EC=A0=84=ED=99=98=20(ARM=20=EC=9D=B8=EC=8A=A4=ED=84=B4?= =?UTF-8?q?=EC=8A=A4=20=EB=8C=80=EC=9D=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-prod.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/cd-prod.yml b/.github/workflows/cd-prod.yml index 5ade0d5..82ed376 100644 --- a/.github/workflows/cd-prod.yml +++ b/.github/workflows/cd-prod.yml @@ -48,12 +48,19 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU + uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 + - name: Build & Push Docker image uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0 with: context: . file: infra/Dockerfile.prod push: true + platforms: linux/amd64,linux/arm64 tags: ghcr.io/ma-ggom/api:latest - name: Get GitHub Actions IP From f751294990d1b6571e4f6f22494221e497ed7f82 Mon Sep 17 00:00:00 2001 From: fakerdeft Date: Thu, 23 Jul 2026 02:02:56 +0900 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=EB=B0=B0=ED=8F=AC=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EB=A9=80=ED=8B=B0=EC=95=84=EC=B9=98(amd64?= =?UTF-8?q?/arm64)=20=EB=B9=8C=EB=93=9C=20=EC=B6=94=EA=B0=80=20-=20CD?= =?UTF-8?q?=EC=97=90=20QEMU/Buildx=20=EC=85=8B=EC=97=85=20=EB=B0=8F=20buil?= =?UTF-8?q?d-push=20platforms=20=EC=A7=80=EC=A0=95=20-=20ARM=20=EC=9D=B8?= =?UTF-8?q?=EC=8A=A4=ED=84=B4=EC=8A=A4=EC=97=90=EC=84=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20pull=20=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-prod.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/cd-prod.yml b/.github/workflows/cd-prod.yml index 5ade0d5..82ed376 100644 --- a/.github/workflows/cd-prod.yml +++ b/.github/workflows/cd-prod.yml @@ -48,12 +48,19 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU + uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 + - name: Build & Push Docker image uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0 with: context: . file: infra/Dockerfile.prod push: true + platforms: linux/amd64,linux/arm64 tags: ghcr.io/ma-ggom/api:latest - name: Get GitHub Actions IP