Merge pull request #297 from Coffect/fix/jun-coffeechat-Card #180
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: deploy-backup | |
| on: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| jobs: | |
| deploy-backup: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 2 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Configure SSH for Backup Server | |
| run: | | |
| mkdir -p ~/.ssh | |
| echo "${{ secrets.BACKUP_SERVER_KEY }}" > ~/.ssh/id_rsa | |
| chmod 600 ~/.ssh/id_rsa | |
| cat > ~/.ssh/config << EOF | |
| Host backup-server | |
| HostName ${{ secrets.BACKUP_SERVER_HOST }} | |
| User ubuntu | |
| IdentityFile ~/.ssh/id_rsa | |
| StrictHostKeyChecking no | |
| UserKnownHostsFile /dev/null | |
| PORT 2210 | |
| LogLevel ERROR | |
| EOF | |
| - name: Test SSH Connection | |
| run: ssh backup-server "echo '✅ Backup Server SSH Connection Successful'" | |
| - name: Sync Files to Backup Server | |
| run: | | |
| echo "📁 백업 서버로 파일 동기화 중..." | |
| rsync -avz --progress \ | |
| --exclude 'node_modules' \ | |
| --exclude '.git' \ | |
| --exclude 'logs' \ | |
| --exclude 'dist' \ | |
| --exclude '.env' \ | |
| ./ backup-server:/home/ubuntu/coffect-BE-backup/ | |
| - name: Setup Backup Server Directory | |
| run: | | |
| ssh backup-server ' | |
| # 백업 디렉토리 준비 | |
| mkdir -p /home/ubuntu/coffect-BE-backup | |
| ' | |
| - name: Install Dependencies on Backup | |
| run: | | |
| ssh backup-server ' | |
| cd /home/ubuntu/coffect-BE-backup | |
| echo "📦 백업 서버 Dependencies 설치 중..." | |
| npm install | |
| npm install pm2 | |
| echo "✅ 백업 서버 Dependencies 설치 완료" | |
| ' | |
| - name: Generate Prisma Client on Backup | |
| run: | | |
| ssh backup-server ' | |
| cd /home/ubuntu/coffect-BE-backup | |
| echo "🔧 백업 서버 Prisma 클라이언트 생성 중..." | |
| npx prisma generate --schema=prisma/mysql/schema.prisma | |
| npx prisma generate --schema=prisma/mongodb/schema.prisma | |
| echo "✅ 백업 서버 Prisma 클라이언트 생성 완료" | |
| ' | |
| - name: Fix Source Code Imports on Backup | |
| run: | | |
| ssh backup-server ' | |
| cd /home/ubuntu/coffect-BE-backup | |
| echo "🔍 백업 서버 Prisma import 경로 수정 중..." | |
| # 효율적인 파일 수정 | |
| find src/ -name "*.ts" -type f | while read file; do | |
| if grep -q "generated/prisma" "$file" 2>/dev/null; then | |
| echo "수정: $file" | |
| sed -i "s|from [\"'\''].*generated/prisma[\"'\'']|from '\''@prisma/client'\''|g" "$file" | |
| sed -i "s|require([\"'\''].*generated/prisma[\"'\''])|require('\''@prisma/client'\'')|g" "$file" | |
| fi | |
| done | |
| echo "✅ 백업 서버 Import 경로 수정 완료" | |
| ' | |
| - name: Build on Backup | |
| run: | | |
| ssh backup-server ' | |
| cd /home/ubuntu/coffect-BE-backup | |
| echo "🏗️ 백업 서버 빌드 중..." | |
| npm run build | |
| echo "✅ 백업 서버 빌드 완료" | |
| ' | |
| - name: Stop PM2 Process on Backup | |
| run: | | |
| ssh backup-server ' | |
| cd /home/ubuntu/coffect-BE-backup | |
| echo "🛑 PM2 프로세스 정리 중..." | |
| npx pm2 stop coffect-backup || true | |
| npx pm2 delete coffect-backup || true | |
| echo "✅ PM2 프로세스 정리 완료" | |
| ' | |
| - name: Start PM2 Process on Backup | |
| run: | | |
| ssh backup-server ' | |
| cd /home/ubuntu/coffect-BE-backup | |
| echo "🚀 PM2로 백업 애플리케이션 시작 중..." | |
| npx pm2 start dist/index.js --name coffect-backup | |
| echo "✅ PM2 백업 프로세스 시작 완료" | |
| ' | |
| - name: Check PM2 Status | |
| run: | | |
| ssh backup-server ' | |
| echo "🏥 PM2 상태 확인..." | |
| npx pm2 status | |
| echo "✅ 백업 서버 배포 완료" | |
| ' | |
| - name: Backup Deployment Summary | |
| if: always() | |
| run: | | |
| echo "📊 백업 서버 배포 완료" | |
| echo "============================" | |
| echo "✅ 메인 브랜치 변경사항이 백업 서버에 반영되었습니다" | |
| echo "✅ PM2로 coffect-backup 프로세스가 실행 중입니다" | |
| echo "⏰ 배포 완료: $(date)" | |