Skip to content
Merged
36 changes: 24 additions & 12 deletions .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,24 +111,30 @@ jobs:
- name: 코드 체크아웃
uses: actions/checkout@v4

- name: 개발 환경 배포 설정
- name: Config 레포지토리 체크아웃
uses: actions/checkout@v4
with:
repository: UruruLab/Ururu-AI-Config
path: config
token: ${{ secrets.PRIVATE_REPO_TOKEN }}

- name: 개발 환경 Config 파일 복사
run: |
printf 'SPRING_BOOT_BASE_URL=%s\n' "${{ secrets.DEV_SPRING_BACKEND_URL }}" >> .env.development
printf 'REDIS_URL=%s\n' "${{ secrets.DEV_REDIS_URL }}" >> .env.development
cp config/.env.development .env.development
echo "✅ 개발환경 Config 파일 복사 완료"

- name: Docker Compose 설정 검증
run: |
echo "개발 환경 설정 파일 검증"
echo "docker-compose.development.yml 구문 검증"
docker compose -f docker-compose.development.yml config --quiet
ENVIRONMENT=development docker compose -f docker-compose.development.yml config --quiet
echo "개발 환경 배포 준비 완료"

- name: 배포 시뮬레이션 (실제 EC2 배포 없음)
run: |
echo "개발 환경 배포 시뮬레이션"
echo "- Docker 이미지: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:develop"
echo "- Spring Boot URL: [MASKED]"
echo "- Redis URL: [MASKED]"
echo "- Config 파일: .env.development (Config 레포지토리에서 가져옴)"
echo "개발 환경 배포 설정 완료"

deploy-production:
Expand All @@ -141,24 +147,30 @@ jobs:
- name: 코드 체크아웃
uses: actions/checkout@v4

- name: 운영 환경 배포 설정
- name: Config 레포지토리 체크아웃
uses: actions/checkout@v4
with:
repository: UruruLab/Ururu-AI-Config
path: config
token: ${{ secrets.PRIVATE_REPO_TOKEN }}

- name: 운영 환경 Config 파일 복사
run: |
printf 'SPRING_BOOT_BASE_URL=%s\n' "${{ secrets.PROD_SPRING_BACKEND_URL }}" >> .env.production
printf 'REDIS_URL=%s\n' "${{ secrets.PROD_REDIS_URL }}" >> .env.production
cp config/.env.production .env.production
echo "✅ 운영환경 Config 파일 복사 완료"

- name: Docker Compose 설정 검증
run: |
echo "운영 환경 설정 파일 검증"
echo "docker-compose.production.yml 구문 검증"
docker compose -f docker-compose.production.yml config --quiet
ENVIRONMENT=production docker compose -f docker-compose.production.yml config --quiet
echo "운영 환경 배포 준비 완료"

- name: 배포 알림 준비
run: |
echo "운영 환경 배포 준비 완료"
echo "- Docker 이미지: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest"
echo "- Spring Boot URL: [MASKED]"
echo "- Redis URL: [MASKED]"
echo "- Config 파일: .env.production (Config 레포지토리에서 가져옴)"
echo "실제 EC2 배포는 별도 프로세스에서 진행"

- name: 배포 완료 알림
Expand Down
46 changes: 42 additions & 4 deletions .github/workflows/docker-health-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ on:
schedule:
- cron: '0 */6 * * *'
workflow_dispatch:
push:
branches:
- main
- 'fix/*'
pull_request:
branches:
- main
- 'fix/*'

jobs:
health-check:
Expand All @@ -13,14 +21,42 @@ jobs:
- name: 코드 체크아웃
uses: actions/checkout@v4

- name: Config 레포지토리 체크아웃
uses: actions/checkout@v4
with:
repository: UruruLab/Ururu-AI-Config
path: config
token: ${{ secrets.PRIVATE_REPO_TOKEN }}

- name: Config 파일 복사 (.env 파일들)
run: |
mkdir -p ./
cp config/.env* ./
echo "✅ Config 파일 복사 완료"

- name: 환경 파일 확인
run: |
echo "📁 복사된 환경 파일 확인"
ls -la .env*
if [ -f ".env.development" ]; then
echo "✅ .env.development 파일 존재"
else
echo "❌ .env.development 파일 없음"
fi
if [ -f ".env.production" ]; then
echo "✅ .env.production 파일 존재"
else
echo "❌ .env.production 파일 없음"
fi

- name: Docker Compose 설정 검증
run: |
echo "✅ Docker Compose 파일 구문 검증"
docker compose config --quiet
echo "✅ 개발환경 설정 검증"
docker compose -f docker-compose.development.yml config --quiet
echo "✅ 운영환경 설정 검증"
docker compose -f docker-compose.production.yml config --quiet
echo "✅ 개발환경 설정 검증 (복사된 Config 파일 사용)"
ENVIRONMENT=development docker compose -f docker-compose.development.yml config --quiet
echo "✅ 운영환경 설정 검증 (복사된 Config 파일 사용)"
ENVIRONMENT=production docker compose -f docker-compose.production.yml config --quiet

- name: 헬스체크 시뮬레이션
run: |
Expand All @@ -42,6 +78,8 @@ jobs:
run: |
echo "📊 헬스체크 완료 보고서"
echo "✅ Docker Compose 설정 파일 정상"
echo "✅ Config 레포지토리 연동 정상"
echo "✅ 환경별 설정 파일 검증 완료"
echo "✅ 워크플로우 설정 정상"
echo "⚠️ 실제 서비스 상태는 EC2에서 별도 확인 필요"
echo "💡 EC2에서 실행: docker compose ps && docker compose logs"
10 changes: 10 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ services:
- ENVIRONMENT=${ENVIRONMENT:-development}
command: /scripts/fetch-config.sh
restart: "no"
healthcheck:
test: ["CMD", "test", "-f", "/config/.env.${ENVIRONMENT:-development}"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s

# FastAPI AI 추천 서비스 (Spring Boot 서버와 통신)
ururu-ai:
Expand All @@ -35,6 +41,10 @@ services:
- HTTP_RETRY_COUNT=${HTTP_RETRY_COUNT:-3}
- HTTP_RETRY_DELAY=${HTTP_RETRY_DELAY:-1}
- GUNICORN_WORKERS=${GUNICORN_WORKERS:-4}
- REDIS_URL=${REDIS_URL:-}
- REDIS_HOST=${REDIS_HOST:-}
- REDIS_PORT=${REDIS_PORT:-}
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
env_file:
- ./config/.env.${ENVIRONMENT:-development}
depends_on:
Expand Down
Loading