-
Notifications
You must be signed in to change notification settings - Fork 0
70 lines (60 loc) · 2.8 KB
/
Copy pathbatch-cd.yml
File metadata and controls
70 lines (60 loc) · 2.8 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
69
70
name: Batch Module CD - Deploy to EC2
on:
workflow_run:
workflows: ["Batch Module CI - Build & Push Docker Image"]
types:
- completed
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 🚀 Deploy to EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST_BATCH }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker pull ${{ secrets.DOCKER_USERNAME }}/tictoc-batch:latest
if ! docker network ls | grep -q tic-toc-net; then
echo "Docker 네트워크가 존재하지 않습니다. 생성합니다."
docker network create tic-toc-net
fi
if ! docker ps --format '{{.Names}}' | grep -q redis; then
echo "Redis가 실행 중이 아닙니다. 실행합니다."
docker-compose -f ~/tictoc-deploy/docker-compose.yml up -d redis
else
echo "Redis가 이미 실행 중입니다."
fi
if docker ps | grep -q tictoc-blue; then
echo "현재 Blue가 실행 중입니다. Green으로 배포합니다."
docker-compose -f ~/tictoc-deploy/docker-compose.green.yml up -d
sleep 5
sudo sed -i 's|proxy_pass http://blue|proxy_pass http://green|' /etc/nginx/conf.d/app.conf
sudo systemctl restart nginx
if docker ps -a --format '{{.Names}}' | grep -q tictoc-blue; then
docker stop tictoc-blue && docker rm tictoc-blue
fi
else
echo "현재 Green이 실행 중입니다. Blue로 배포합니다."
docker-compose -f ~/tictoc-deploy/docker-compose.blue.yml up -d
sleep 5
sudo sed -i 's|proxy_pass http://green|proxy_pass http://blue|' /etc/nginx/conf.d/app.conf
sudo nginx -t && sudo systemctl restart nginx
if docker ps -a --format '{{.Names}}' | grep -q tictoc-green; then
docker stop tictoc-green && docker rm tictoc-green
fi
fi
- name: 🗑️ Delete Unused Images
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST_BATCH }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
echo "실행 중이지 않은 tictoc-batch 및 redis 이미지 삭제 중..."
docker images | grep 'tictoc-batch' | awk '{print $3}' | xargs -r docker rmi -f
docker images | grep 'redis' | awk '{print $3}' | xargs -r docker rmi -f
docker image prune -f
echo "✅ 삭제 완료!"