diff --git a/.github/workflows/cd-prod.yml b/.github/workflows/cd-prod.yml index f5b56f2..82ed376 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 ] @@ -48,13 +48,20 @@ 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 - tags: ghcr.io/ma-ggom/backend:latest + platforms: linux/amd64,linux/arm64 + tags: ghcr.io/ma-ggom/api:latest - name: Get GitHub Actions IP id: ip @@ -77,8 +84,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 +95,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 +109,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")