From 468ff1f9d5c507d4c51e9f220fea4d398ab15dc0 Mon Sep 17 00:00:00 2001 From: eun-byeol Date: Fri, 29 Nov 2024 22:29:25 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20prod=20v2=20=EB=A1=A4=EB=B0=B1=20?= =?UTF-8?q?=EC=9E=91=EC=97=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/backend-cd-prod-v2.yml | 33 ++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/.github/workflows/backend-cd-prod-v2.yml b/.github/workflows/backend-cd-prod-v2.yml index 9ce426249..11a8b4cc0 100644 --- a/.github/workflows/backend-cd-prod-v2.yml +++ b/.github/workflows/backend-cd-prod-v2.yml @@ -13,7 +13,6 @@ on: env: DOCKERHUB_REPOSITORY: ody-official - DOCKER_CONTAINER_NAME: ody-prod-app jobs: build-and-push: @@ -69,6 +68,13 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: Back Up Image For Rollback + run: | + docker pull ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:prod-latest || true + docker tag ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:prod-latest ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:prod-previous || true + docker push ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:prod-previous || true + + - name: Docker Image Build And Push run: docker build --platform linux/arm64 -t ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:${{ github.sha }}-prod_v2 -f Dockerfile . --push @@ -93,8 +99,31 @@ jobs: export DOCKERHUB_REPOSITORY=$DOCKERHUB_REPOSITORY export PROD_MYSQL_PASSWORD=${{ secrets.PROD_MYSQL_PASSWORD }} export JASYPT_ENCRYPTOR_PASSWORD=${{ secrets.JASYPT_PASSWORD }} - export GIT_SHA=${{ github.sha }} + export TAG=${{ github.sha }}-prod_v2 + docker compose up -d + + #TODO: 도메인 연결 시, health check 필요 + + - name: Rollback if Health Check fails + if: failure() + run: | + docker compose down || true + docker rmi $(docker images -q) -f || true + docker pull ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:prod-previous + + export DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }} + export DOCKERHUB_REPOSITORY=$DOCKERHUB_REPOSITORY + export PROD_MYSQL_PASSWORD=${{ secrets.PROD_MYSQL_PASSWORD }} + export JASYPT_ENCRYPTOR_PASSWORD=${{ secrets.JASYPT_PASSWORD }} + export TAG=prod-previous docker compose up -d + - name: Tag successful deployment as latest + if: success() + run: | + docker tag ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:${{ github.sha }}-prod_v2 ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:prod-latest + docker push ${{ secrets.DOCKERHUB_USERNAME }}/$DOCKERHUB_REPOSITORY:prod-latest + - name: Check Docker Process + if: always() run: docker ps