88 workflow_dispatch :
99
1010jobs :
11+ upload-deployment :
12+ runs-on : ubuntu-latest
13+ steps :
14+ - uses : actions/checkout@v4
15+
16+ - name : Copy deployment files to EC2
17+ uses : appleboy/scp-action@v0.1.4
18+ with :
19+ host : ${{ secrets.EC2_HOST }}
20+ username : ubuntu
21+ key : ${{ secrets.EC2_PRIVATE_KEY }}
22+ source : " deployment"
23+ target : " ~/NBE5-7-2-TEAM08"
24+
25+ get-active-color :
26+ runs-on : ubuntu-latest
27+ needs : upload-deployment
28+ outputs :
29+ new_color : ${{ steps.set_color.outputs.NEW_COLOR }}
30+ steps :
31+ - name : SSH로 EC2에서 active_color.txt 열기
32+ id : get_color
33+ uses : appleboy/ssh-action@v1
34+ with :
35+ host : ${{ secrets.EC2_HOST }}
36+ username : ubuntu
37+ key : ${{ secrets.EC2_PRIVATE_KEY }}
38+ script : |
39+ if [ -f ~/NBE5-7-2-TEAM08/deployment/active_color.txt ]; then
40+ cat ~/NBE5-7-2-TEAM08/deployment/active_color.txt
41+ else
42+ echo "blue"
43+ fi
44+ continue-on-error : true
45+
46+ - name : 다음 배포 색상 결정
47+ id : set_color
48+ run : |
49+ echo "CURRENT_COLOR=$(ssh -o StrictHostKeyChecking=no -i <(echo '${{ secrets.EC2_PRIVATE_KEY }}') ubuntu@${{ secrets.EC2_HOST }} 'cat ~/NBE5-7-2-TEAM08/deployment/active_color.txt 2>/dev/null || echo blue')" >> $GITHUB_ENV
50+
51+ if [ "$CURRENT_COLOR" = "blue" ]; then
52+ echo "NEW_COLOR=green" >> "$GITHUB_OUTPUT"
53+ else
54+ echo "NEW_COLOR=blue" >> "$GITHUB_OUTPUT"
55+ fi
56+
1157 backend :
1258 runs-on : ubuntu-latest
59+ needs : get-active-color
60+ env :
61+ NEW_COLOR : ${{ needs.get-active-color.outputs.new_color }}
1362 defaults :
1463 run :
1564 working-directory : backend
@@ -31,12 +80,15 @@ jobs:
3180 password : ${{ secrets.DOCKER_PASSWORD }}
3281
3382 - name : Docker build image (backend)
34- run : docker build --platform linux/amd64 -t limkanghyun/dev-chat-backend .
83+ run : docker build --platform linux/amd64 -t limkanghyun/dev-chat-backend:${NEW_COLOR} .
3584 - name : Docker push backend image
36- run : docker push limkanghyun/dev-chat-backend
85+ run : docker push limkanghyun/dev-chat-backend:${NEW_COLOR}
3786
3887 frontend :
3988 runs-on : ubuntu-latest
89+ needs : get-active-color
90+ env :
91+ NEW_COLOR : ${{ needs.get-active-color.outputs.new_color }}
4092 defaults :
4193 run :
4294 working-directory : frontend
58110 password : ${{ secrets.DOCKER_PASSWORD }}
59111
60112 - name : Docker build image(frontend)
61- run : docker build --platform linux/amd64 -t limkanghyun/dev-chat-frontend .
113+ run : docker build --platform linux/amd64 -t limkanghyun/dev-chat-frontend:${NEW_COLOR} .
62114 - name : Docker push frontend image
63- run : docker push limkanghyun/dev-chat-frontend
115+ run : docker push limkanghyun/dev-chat-frontend:${NEW_COLOR}
64116
65117 deploy :
66118 runs-on : ubuntu-latest
@@ -70,23 +122,14 @@ jobs:
70122 - name : Checkout repository
71123 uses : actions/checkout@v4
72124
73- - name : Copy deployment files to EC2
74- uses : appleboy/scp-action@v0.1.4
75- with :
76- host : ${{ secrets.EC2_HOST }}
77- username : ubuntu
78- key : ${{ secrets.EC2_PRIVATE_KEY }}
79- source : " deployment"
80- target : " ~/NBE5-7-2-TEAM08"
81-
82125 - name : Deploy to EC2 via SSH
83126 uses : appleboy/ssh-action@v1
84127 with :
85128 host : ${{ secrets.EC2_HOST }}
86129 username : ubuntu
87130 key : ${{ secrets.EC2_PRIVATE_KEY }}
88131 script : |
89- cd ~/NBE5-7-2-TEAM08
132+ cd ~/NBE5-7-2-TEAM08/deployment
90133 chmod +x ./deploy.sh
91134 ./deploy.sh
92135 # 중단방식
0 commit comments