CI/CD 적용하기 위한 crontab 정리

gahyun·2022년 12월 19일
3

GitLab

목록 보기
5/5
post-thumbnail
  • ohmybash
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"

Crontab이란?

스케줄링을 관리하는 프로그램
특정시간대에 사용자가 작성한 스크립트나 명령을 실행하여 백업 시스템을 만들수도 있고 데이터 베이스 관리나 기타 반복적인 업무을 위해서 사용된다.

📋 기본 명령어

  • crontab -l 예약된 작업 리스트 출력
  • crontab -e 예약된 작업 리스트 수정
  • crontab -r 예약된 작업 리스트 목록 삭제

📋 시간대 지정

  • 분, 시, 일, 월, 요일에 *을 입력
  • 첫번째 필드 : 분 (0~59)
  • 두 번째 필드 : 시 (0~23)
  • 세 번째 필드 : 일 (0~31)
  • 네 번째 필드 : 월 (1~12)
  • 다섯 번째 필드 : 요일 (0~7)
    📌 0,7 = 일요일 ,1 = 월요일

자동화를 위한 과정

1. deploy.sh

  • /home 이동

  • cd ubuntu

  • vim deploy.sh 실행파일 vim으로 작성

#!/bin/bash
set -ex

docker pull <registry주소> | grep "Image is up to date" && pull_status="already_pulled" || pull_status="newly_pulled"

echo $pull_status

if [ "$pull_status" = "newly_pulled" ];
        then
        docker stop <이름> ;
        docker rm -f <이름> ;
        docker run -p 8080:8080 --name <이름>  -e SPRING_DATASOURCE_URL=jdbc:mysql://<ec2주소>:3306/<스키마명> -e SPRING_DATASOURCE_PASSWORD=<비밀번호>  -e JWT_TOKEN_SECRET=<token 비밀번호> -d <registry주소>;
        docker image prune -f
fi
  • sh deploy.sh 로 작동하는지 확인하기
  • docker ps 로 pull, run 잘 진행되었는지 확인

2. crontab 적용

  • crontab -e
  • editor 선택 (1 입력)

* * * * * sh /home/ubuntu/deploy.sh >> /home/ubuntu/deploy.log
  • * * * * * 때 마다
  • sh deploy.sh 실행하여서
  • >> deploy.log 에 누적으로 기록하기

📋 저장하기

  • ctrl+x

  • y yes로 나가기

  • enter

📋 log 기록 확인

  • cat deploy.log 로 log 기록 확인하기

0개의 댓글