Skip to content

Merge pull request #297 from Coffect/fix/jun-coffeechat-Card #180

Merge pull request #297 from Coffect/fix/jun-coffeechat-Card

Merge pull request #297 from Coffect/fix/jun-coffeechat-Card #180

Workflow file for this run

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)"