Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Be/bugfix/#488 도커 healthcheck #489

Merged
merged 11 commits into from
Jan 22, 2024
Merged

Conversation

kimyu0218
Copy link
Collaborator

@kimyu0218 kimyu0218 commented Jan 22, 2024

변경 사항

  • start-prod 오타 수정 : start_prod
  • deploy.sh 실패 시 곧바로 스크립트 종료하도록 설정
  • deploy.sh의 결과를 바탕으로 슬랙 알림 보내도록 설정

고민과 해결 과정

deploy.sh

#!/bin/bash

# 에러 발생 시 스크립트 즉시 종료하도록
set -e 

ERR_MSG=''

# ERR 시그널이 발생하면 에러 메시지 출력하고 비정상적으로 종료하도록
trap 'echo "Error occured: $ERR_MSG. Exiting deploy script."; exit 1' ERR

....

# 도커 컴포즈 파일 pull, up 과정에서 에러 나는 경우 종료하도록 설정
DOCKER_COMPOSE_FILE="compose.$RUN_TARGET-deploy.yml"
sudo docker-compose -f "$DOCKER_COMPOSE_FILE" pull || { ERR_MSG='Failed to pull docker image'; exit 1; }
sudo docker-compose -f "$DOCKER_COMPOSE_FILE" up -d || { ERR_MSG='Failed to start docker image'; exit 1; }

...

# nginx 리로드 과정에서 에러나는 경우 종료하도록 설정
sudo docker exec $NGINX_ID /bin/bash -c "nginx -s reload" || { ERR_MSG='Failed to reload nginx'; exit 1; }

...

Blue/Green CD

# backend-deploy 작업 중
- name: Run a New Version of the application on Remote Server
  uses: appleboy/ssh-action@master
  with:
    host: ${{ secrets.SSH_HOST }}
    username: ${{ secrets.SSH_USERNAME }}
    key: ${{ secrets.SSH_PRIVATE_KEY }}
    port: ${{ secrets.SSH_PORT }}
    script: |
      cd ~/app/backend
      chmod +x deploy.sh
      export DEPLOYMENT_SUCCESS='success' # 환경변수 success로 초기화
      source deploy.sh || export DEPLOYMENT_SUCCESS='failure' # deploy.sh에 실패하는 경우 failure로 수정

- uses: 8398a7/action-slack@v3
  with:
    status: ${{ env.DEPLOYMENT_SUCCESS }} # 작업 성공 여부가 아닌, 배포 성공 여부 전달
    author_name: Blue/Green CD
    fields: message,author,action,workflow,job
  env:
    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URI_FOR_GITHUB_ACTIONS }}
  if: always()

(선택) 테스트 결과

@kimyu0218 kimyu0218 added this to the version 1.0.0 milestone Jan 22, 2024
@kimyu0218 kimyu0218 self-assigned this Jan 22, 2024
Copy link

cloudflare-workers-and-pages bot commented Jan 22, 2024

Deploying with  Cloudflare Pages  Cloudflare Pages

Latest commit: 87873b0
Status: ✅  Deploy successful!
Preview URL: https://23f44ba5.web09-magicconch.pages.dev
Branch Preview URL: https://be-bugfix--488----healthchec.web09-magicconch.pages.dev

View logs

- docker-compose 관련 명령 실패 시 exit 1로 비정상 종료하도록 수정
- 상단에 "set -e"를 추가하여 에러가 발생하면 스크립트가 즉시 종료되도록
  설정
- trap을 이용하여 ERR 시그널이 발생하면 에러 메시지를 출력하고
  종료하도록 설정
- docker-compose, reload nginx 중에 에러가 발생하면 곧바로 종료
- 이전까진 job.status를 전달함
- DEPLOYMENT_SUCCESS 환경변수를 이용하여 배포 스크립트의 실행결과를
  전달하도록 수정
- action-slack의 status는 'success'나 'failure' 상태를 가져야 함
- DEPLOY_SUCCESS를 'success'로 초기화
- deploy.sh에서 오류가 발생하면 'failure'로 변경
@kimyu0218 kimyu0218 marked this pull request as ready for review January 22, 2024 14:14
@kimyu0218 kimyu0218 linked an issue Jan 22, 2024 that may be closed by this pull request
@kimyu0218 kimyu0218 merged commit 6baae59 into dev Jan 22, 2024
1 check passed
@kimyu0218 kimyu0218 deleted the BE/bugfix/#488-도커-healthcheck branch January 22, 2024 14:14
@HeoJiye HeoJiye mentioned this pull request Feb 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

🐞 도커 healthcheck 오류
1 participant