Skip to content

[FEAT] #143 kafka 도입 비동기 이벤트 기반 추천알림 로직 개발 #283

[FEAT] #143 kafka 도입 비동기 이벤트 기반 추천알림 로직 개발

[FEAT] #143 kafka 도입 비동기 이벤트 기반 추천알림 로직 개발 #283

Workflow file for this run

name: CI/CD with Blue-Green Deployment
on:
push:
branches: [ "develop" ]
pull_request:
branches: [ "develop" ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# 1. GitHub 레포 체크아웃 (소스코드 가져옴)
- name: Checkout repository
uses: actions/checkout@v3
# 2. JDK 17 설정
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# 3. gradlew 권한 부여
- name: Make gradlew executable
run: chmod +x ./gradlew
# 4. Gradle Build (테스트 제외)
- name: Build with Gradle (skip tests)
run: ./gradlew build -x test
# 5. Docker Build & Push
- name: Build and push Docker image
if: github.event_name == 'push'
run: |
echo "🔨 Building Docker image..."
docker build -t ${{ secrets.DOCKER_USERNAME }}/ccapp:latest .
echo "🔐 Logging into Docker Hub..."
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
echo "📤 Pushing to Docker Hub..."
docker push ${{ secrets.DOCKER_USERNAME }}/ccapp:latest
# 6. 배포 파일들을 EC2로 복사
- name: Copy deployment files to EC2
if: github.event_name == 'push'
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ubuntu
key: ${{ secrets.PRIVATE_KEY }}
source: "docker-compose.yml,switch-blue-green.sh,health-check.sh,rollback.sh"
target: /home/ubuntu/ccapp
overwrite: true
# 7. EC2에서 블루그린 배포 실행
- name: Deploy with Blue-Green strategy
if: github.event_name == 'push'
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.HOST }}
username: ubuntu
key: ${{ secrets.PRIVATE_KEY }}
script: |
cd /home/ubuntu/ccapp
echo "🔒 Docker Hub Login"
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
echo "📦 Pull latest images"
docker compose pull
chmod +x switch-blue-green.sh health-check.sh rollback.sh
echo "🔄 Execute Blue-Green deployment with auto rollback"
if ./switch-blue-green.sh; then
echo "✅ Deployment completed successfully"
else
echo "❌ Deployment failed, check rollback logs"
if [ -f /tmp/rollback.log ]; then
echo "📋 Rollback logs:"
cat /tmp/rollback.log
fi
exit 1
fi