Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
38 changes: 17 additions & 21 deletions .github/workflows/cd-prod.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: CD (main)
name: CD Prod

on:
workflow_run:
workflows: [ "CI (main)" ]
workflows: [ "CI" ]
types: [ completed ]
branches: [ main ]

Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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 }}
Expand All @@ -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
Expand Down
36 changes: 0 additions & 36 deletions .github/workflows/ci-dev.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/ci-prod.yml → .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: CI (main)
name: CI

on:
push:
branches: [ main ]
branches: [ develop, main ]

jobs:
ci:
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -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
26 changes: 4 additions & 22 deletions infra/docker-compose.prod.yml
Original file line number Diff line number Diff line change
@@ -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}
Expand All @@ -32,9 +19,4 @@ services:
- "8080:8080"
volumes:
- ../logs/spring:/logs
depends_on:
- postgres
restart: always

volumes:
maggom-postgres-data:
restart: always
2 changes: 1 addition & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
rootProject.name = "maggom"
rootProject.name = "maggom-api"

include("app")
include("admin")
Expand Down
Loading