Network
CICD란? crontab 사용하여 자동 배포해보기(CD)
kyunge_ev
2023. 1. 8. 21:00
CICD란?
애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법
기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포
새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하기 위한 솔루션
CI (Continuous Integration : 지속적인 통합)
- 빌드, 테스트 자동화 과정
- 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결 할 수 있음
CD (Continuous Deployment : 지속적인 배포)
- Continuous Delivery : 지속적인 서비스 제공
- 배포 자동화 과정
- 코드 변경이 빌드, 테스트 단계를 성공적으로 통과하면 개발자의 수동 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포됨 👉 품질 저하 없이 최대한 빨리 사용자에게 새로운 기능을 제공할 수 있음
CI / CD 의 종류
- Jenkins
- GitLab
- etc...
crontab이란?
- 리눅스에서 일정주기, 특정시간 명령을 실행할 때 사용하는 것
crontab 명령어
crontab -e
# crontab 작성
# 처음 작성 시 편집기 선택 화면이 나옴 -> [2] vim 사용하면됨([1]~[4] 편집도구를 선택할 수 있음)
$ crontab -l
# crontab 작업 리스트 보기
$ crontab -r
# crontab 모든 작업 삭제
# 출력결과를 파일에 저장하기 '>'
# 최근 1건만 출력 -> 덮어쓰기됨
# 출력결과를 파일에 저장하기 '>>'
# 모든 기록이 출력됨 -> 이어쓰기
$ docker ps > dps.log
$ docker ps >> dps.log
crontab 작성
$ * * * * * command
# 매분 test.sh 을 수행
$ * * * * * /home/user/test.sh
# 매일 21시 30분에 수행
$ 30 21 * * * /home/user/test.sh
# 매주 일요일 21시 30분에 수행
$ 30 21 * * 7 /home/user/test.sh
# 매월 2일 11시 11분에 수행
$ 11 11 2 * * /home/user/test.sh
- 분(0-59)
- 시(0-23)
- 일(1-31)
- 월(1-12)
- 요일(0-7 : 0 / 7 일요일, 1 월요일 ...)
👉 실행 주기를 정한 다음 수행할 명령어(command)를 입력
실습)
- 매분마다 hello를 찍는 crontab 작성
1. crontab -e 로 crontab 작성(저장하고 나오기 :wq! )
2. crontab -l 로 작성한 crontab 보기
3. hello가 매분마다 찍히는지 확인하기 위해 .log 파일을 만들어 출력여부 확인하기
/home/ubuntu 위치에 echo.log 파일 생성하고 해당 파일에 hello를 출력하기(>, 덮어쓰기는 >>)
4. 출력 결과 확인을 위해 파일 내용 보기
# cat [파일경로][파일명]
cat /home/ubuntu/echo.log
그 외 명령어
시스템 시간 변경(sudo 권한 필요)
$ ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
현재 시간 정보 확인
$ date