1- name : Deploy To EC2 (Blue-Green via Bastion )
1+ name : Deploy To EC2 (Blue-Green Public )
22
33on :
44 push :
@@ -8,13 +8,13 @@ permissions:
88 contents : read
99
1010jobs :
11- # 1๏ธโฃ BUILD JOB
11+ # 1๏ธโฃ BUILD JOB: ๋น๋ ๋ฐ ECR ์ด๋ฏธ์ง ์
๋ก๋
1212 build :
1313 runs-on : ubuntu-latest
1414 steps :
1515 - uses : actions/checkout@v4
1616
17- - uses : actions /setup-java@v4
17+ - uses : images /setup-java@v4
1818 with :
1919 distribution : temurin
2020 java-version : 17
2727 chmod +x ./gradlew
2828 ./gradlew clean build -x test
2929
30- - uses : aws-actions/configure-aws-credentials@v4
30+ - name : Configure AWS Credentials
31+ uses : aws-actions/configure-aws-credentials@v4
3132 with :
3233 aws-region : ap-northeast-2
3334 aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
@@ -44,45 +45,39 @@ jobs:
4445 docker tag forday:latest 839983937363.dkr.ecr.ap-northeast-2.amazonaws.com/forday:latest
4546 docker push 839983937363.dkr.ecr.ap-northeast-2.amazonaws.com/forday:latest
4647
47- # 2๏ธโฃ DEPLOY JOB
48+ # 2๏ธโฃ DEPLOY JOB: Public EC2์ ์ง์ ์ ์ํ์ฌ ๋ฐฐํฌ
4849 deploy :
4950 needs : build
5051 runs-on : ubuntu-latest
5152 steps :
52- - name : Configure SSH (Bastion โ Private)
53+ - name : Configure SSH
5354 run : |
5455 mkdir -p ~/.ssh
5556 echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
5657 chmod 600 ~/.ssh/id_rsa
57-
58+
59+ # ๋ณ์นญ(Alias)์ 'ec2-server'๋ก ์ค์ ํ์ฌ ์ ์ ๊ฐ์ํ
5860 cat <<EOF >> ~/.ssh/config
59- Host bastion
60- HostName ${{ secrets.BASTION_HOST }}
61+ Host ec2-server
62+ HostName ${{ secrets.EC2_PUBLIC_IP }}
6163 User ubuntu
6264 IdentityFile ~/.ssh/id_rsa
6365 StrictHostKeyChecking no
64-
65- Host private
66- HostName ${{ secrets.EC2_PRIVATE_HOST }}
67- User ubuntu
68- IdentityFile ~/.ssh/id_rsa
69- ProxyJump bastion
70- StrictHostKeyChecking no
7166 EOF
7267
73- - name : Blue-Green Deploy
68+ - name : Blue-Green Deploy via SSH
7469 run : |
75- ssh private << 'EOF'
70+ ssh ec2-server << 'EOF'
7671 set -e
7772
78- echo "โถ Detect current upstream from nginx env file "
73+ echo "โถ Nginx ํ๊ฒฝ ์ค์ ํ์ธ "
7974 if [ -f /etc/nginx/conf.d/service-env.inc ]; then
8075 CURRENT_VAL=$(grep -oP '(?<=set \$service_url ).*(?=;)' /etc/nginx/conf.d/service-env.inc || echo "blue")
8176 else
8277 CURRENT_VAL="blue"
8378 fi
8479
85- echo "ํ์ฌ ์๋น์ค ์ํ : $CURRENT_VAL"
80+ echo "ํ์ฌ ์๋น์ค ์์น : $CURRENT_VAL"
8681
8782 if [ "$CURRENT_VAL" = "blue" ]; then
8883 TARGET="green"
@@ -94,20 +89,19 @@ jobs:
9489 OLD_TARGET="green"
9590 fi
9691
97- echo "โถ Deploy target: $TARGET (port: $TARGET_PORT)"
98- echo "โถ Old container: $OLD_TARGET"
92+ echo "โถ ๋ฐฐํฌ ๋์: $TARGET (ํฌํธ: $TARGET_PORT)"
9993
100- # ECR ๋ก๊ทธ์ธ
94+ # EC2 ๋ด๋ถ์์ ECR ๋ก๊ทธ์ธ
10195 aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 839983937363.dkr.ecr.ap-northeast-2.amazonaws.com
10296
103- echo "โถ Pull image "
97+ echo "โถ ์ต์ ์ด๋ฏธ์ง Pull "
10498 docker pull 839983937363.dkr.ecr.ap-northeast-2.amazonaws.com/forday:latest
10599
106- echo "โถ Stop & remove current $TARGET (if exists) "
100+ echo "โถ $TARGET ์ปจํ
์ด๋ ์ด๊ธฐํ "
107101 docker stop $TARGET || true
108102 docker rm $TARGET || true
109103
110- echo "โถ Run new $TARGET"
104+ echo "โถ $TARGET ์ปจํ
์ด๋ ์คํ "
111105 docker run -d \
112106 --name $TARGET \
113107 --restart=always \
@@ -117,32 +111,33 @@ jobs:
117111 -e SPRING_DATA_REDIS_PORT=6379 \
118112 839983937363.dkr.ecr.ap-northeast-2.amazonaws.com/forday:latest
119113
120- echo "โถ Health Check"
114+ echo "โถ ํฌ์ค ์ฒดํฌ ์์ (http://localhost:$TARGET_PORT/health_check)"
115+ HEALTH_OK=false
121116 for i in {1..20}; do
122117 if curl -sf http://localhost:$TARGET_PORT/health_check; then
123- echo "Health OK "
118+ echo "โ
ํฌ์ค ์ฒดํฌ ์ฑ๊ณต! "
124119 HEALTH_OK=true
125120 break
126121 fi
127- echo "Waiting ... ($i/20)"
122+ echo "๋๊ธฐ ์ค ... ($i/20)"
128123 sleep 5
129124 done
130125
131126 if [ "$HEALTH_OK" != "true" ]; then
132- echo "โ Health check failed. Rollback ."
127+ echo "โ ํฌ์ค ์ฒดํฌ ์คํจ. ๋ฐฐํฌ๋ฅผ ์ค๋จํฉ๋๋ค ."
133128 docker logs $TARGET
134129 exit 1
135130 fi
136131
137- echo "โถ Switching Nginx upstream to $TARGET"
132+ echo "โถ Nginx ์ค์์นญ: $TARGET"
138133 echo "set \$service_url $TARGET;" | sudo tee /etc/nginx/conf.d/service-env.inc
139134
140135 sudo nginx -t
141136 sudo nginx -s reload
142137
143- echo "โถ Stopping OLD container: $OLD_TARGET"
138+ echo "โถ ์ด์ ์ปจํ
์ด๋( $OLD_TARGET) ์ ๋ฆฌ "
144139 docker stop $OLD_TARGET || true
145140 docker rm $OLD_TARGET || true
146141
147- echo "โ
Deployment complete. Now running : $TARGET"
148- EOF
142+ echo "๐ ๋ฐฐํฌ ์๋ฃ! ํ์ฌ ์คํ ์ค : $TARGET"
143+ EOF
0 commit comments