diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index 2a53393f..679630e4 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -17,6 +17,7 @@ jobs: runs-on: ubuntu-latest steps: + - uses: actions/checkout@v3 #jdk 세팅 - name: Set up JDK 17 uses: actions/setup-java@v2 diff --git a/scripts/health-check.sh b/scripts/health-check.sh new file mode 100644 index 00000000..55863484 --- /dev/null +++ b/scripts/health-check.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Crawl current connected port of WAS +CURRENT_PORT=$(cat /home/ubuntu/service_url.inc | grep -Po '[0-9]+' | tail -1) +TARGET_PORT=0 + +# Toggle port Number +if [ ${CURRENT_PORT} -eq 8081 ]; then + TARGET_PORT=8082 +elif [ ${CURRENT_PORT} -eq 8082 ]; then + TARGET_PORT=8081 +else + echo "> No WAS is connected to nginx" + exit 1 +fi + + +echo "> Start health check of WAS at 'http://13.209.202.74:${TARGET_PORT}' ..." + +for RETRY_COUNT in 1 2 3 4 5 6 7 8 9 10 +do + echo "> #${RETRY_COUNT} trying..." + RESPONSE_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://13.209.202.74:${TARGET_PORT}/api) + + if [ ${RESPONSE_CODE} -eq 200 ]; then + echo "> New WAS successfully running" + exit 0 + elif [ ${RETRY_COUNT} -eq 10 ]; then + echo "> Health check failed." + exit 1 + fi + sleep 10 +done \ No newline at end of file diff --git a/scripts/run_new_was.sh b/scripts/run_new_was.sh new file mode 100644 index 00000000..9f9b3b48 --- /dev/null +++ b/scripts/run_new_was.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +CURRENT_PORT=$(cat /home/ubuntu/service_url.inc | grep -Po '[0-9]+' | tail -1) +TARGET_PORT=0 + +echo "> Current port of running WAS is ${CURRENT_PORT}." + +if [ ${CURRENT_PORT} -eq 8081 ]; then + TARGET_PORT=8082 +elif [ ${CURRENT_PORT} -eq 8082 ]; then + TARGET_PORT=8081 +else + echo "> No WAS is connected to nginx" +fi + +TARGET_PID=$(lsof -Fp -i TCP:${TARGET_PORT} | grep -Po 'p[0-9]+' | grep -Po '[0-9]+') + +if [ ! -z ${TARGET_PID} ]; then + echo "> Kill WAS running at ${TARGET_PORT}." + sudo kill ${TARGET_PID} +fi + +nohup java -jar -Dserver.port=${TARGET_PORT} /home/ubuntu/duaily-server/build/libs/* > /home/ubuntu/nohup.out 2>&1 --spring.profiles.active=prod & +echo "> Now new WAS runs at ${TARGET_PORT}." +exit 0 \ No newline at end of file diff --git a/scripts/switch.sh b/scripts/switch.sh new file mode 100644 index 00000000..5f255e3e --- /dev/null +++ b/scripts/switch.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Crawl current connected port of WAS +CURRENT_PORT=$(cat /home/ubuntu/service_url.inc | grep -Po '[0-9]+' | tail -1) +TARGET_PORT=0 + +echo "> Nginx currently proxies to ${CURRENT_PORT}." + +# Toggle port number +if [ ${CURRENT_PORT} -eq 8081 ]; then + TARGET_PORT=8082 +elif [ ${CURRENT_PORT} -eq 8082 ]; then + TARGET_PORT=8081 +else + echo "> No WAS is connected to nginx" + exit 1 +fi + +# Change proxying port into target port +echo "set \$service_url http://13.209.202.74:${TARGET_PORT};" | tee /home/ubuntu/service_url.inc +echo "set \$service_admin_url http://13.209.202.74:${TARGET_PORT}/admin;" | tee /home/ubuntu/service_admin_url.inc + +echo "> Now Nginx proxies to ${TARGET_PORT}." + +# Reload nginx +sudo service nginx reload + +echo "> Nginx reloaded." \ No newline at end of file