-
Notifications
You must be signed in to change notification settings - Fork 0
68 lines (55 loc) · 2.15 KB
/
Copy pathdeploy.yml
File metadata and controls
68 lines (55 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
name: Deploy to EC2
on:
push:
branches: [ main, develop ]
# PR에서는 배포하지 않음
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.EC2_SSH_KEY }}" | base64 -d > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keygen -l -f ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts || true
- name: Deploy to EC2
timeout-minutes: 15
env:
BRANCH_NAME: ${{ github.ref_name }}
run: |
# 배포 스크립트를 단계별로 실행
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=30 -o ServerAliveInterval=60 -o ServerAliveCountMax=10 jeonwooseon@${{ secrets.EC2_HOST }} << EOF
set -e # 에러 시 즉시 중단
BRANCH="${BRANCH_NAME}"
# 브랜치에 따라 환경 설정
if [ "\$BRANCH" = "develop" ]; then
echo "=== QA 환경 배포 시작: \$(date) ==="
COMPOSE_FILE="docker-compose-qa.yml"
ENV_FILE=".env.qa"
LOG_FILE="build-qa.log"
else
echo "=== Production 환경 배포 시작: \$(date) ==="
COMPOSE_FILE="docker-compose.yml"
ENV_FILE=".env"
LOG_FILE="build.log"
fi
echo "1. 코드 업데이트 중..."
cd /home/jeonwooseon/Backend
git fetch origin
git reset --hard origin/\$BRANCH
echo "2. Firebase 설정 파일 생성 중..."
echo '${{ secrets.FIREBASE_SERVICE_ACCOUNT }}' > src/main/resources/firebase-service-account.json
echo "3. 무중단 배포 시작 (빌드 및 컨테이너 재시작)..."
docker-compose -f \$COMPOSE_FILE --env-file \$ENV_FILE up -d --build
echo "4. 배포 상태 확인 중..."
sleep 10
docker-compose -f \$COMPOSE_FILE --env-file \$ENV_FILE ps
echo "5. Docker 정리 중..."
chmod +x scripts/docker-cleanup.sh
./scripts/docker-cleanup.sh
echo "=== 배포 완료: \$(date) ==="
EOF