2019. 6. 22. 15:38ㆍ[정리] 기능별 개념 정리/Jenkins
동영상 강의 출처 : https://www.youtube.com/watch?v=ZM9sU3nqCMM&list=PLDcefyNIUHcVMj_iTMqnc-Ia_vZS4Vg29&index=3&t=1753s
기존의 배포 방식
- RSync
- SymbolicLink
- VCS
- 복사, 붙여넣기
본 강의의 목적
- Github 에서 Webhook을 발생시켜 Jenkins에서 이를 자동 빌드할 수 있도록한다.
- Jenkins 로 Continous Integration 한다.
- Docker-compose 로 Continous Deployment 한다
Continuouse Integration
젠킨스
- CI 도구
- 테스트
- 빌드
실행 : /etc/init.d/jenkins start
옵션 : /etc/default/jenkins
Github Webhook
깃허브에서 Webhook 을 젠킨스에 날리면 젠킨스가 이를 받아서 자동 빌드할 수 있도록 해보자.
1. Github plugin 설치
- 깃허브가 Webhook 을 Jenkins 에 날릴 수 있도록 Jenkins 에 설치해야하는 plugin
2. 작업을 만든다.
- General : github project 체크
- 소스코드 관리 : Git 에 관련 설정 입력
- 빌드 유발 : Build when a change is pushed to GitHub
Github 에 Webhook 생성
Github Repository -> Settings -> Webhooks 에서 Add webhook 클릭
1. Payload URL : http://<My-젠킨스-도메인>/github-webhook
2. Just the push event. 체크
3. Active 체크
깃허브에 push 가되면 Webhook 이 Jenkins 로 날라가게된다.
Script
Job 이 Webhook 을 받으면 처리할 빌드 스크립트를 작성한다,
Jenkins -> Project Job -> 구성 -> 빌드 -> Command
${JENKINS_HOME}/script/push.sh
${JENKINS_HOME}/script/deploy.sh
가볍게 push.sh 쉡스크립트와 deploy.sh 라는 쉘스크립트를 통해서 빌드를 하도록 하였다.
push.sh 와 deploy.sh 관련 파일은 영상 참조한다.
SSH 인증
Job 이 빌드하는 과정중에 SSH 가 필요한 과정이 있으면 SSH 인증이 필요할 수 있다.
그런데 비밀번호 치는 것을 자동화 시킬 수 없으니 아예 포함시키는 방법
No push & pull
운영 환경은 자주 변하지 않는 반면 소스 코드는 자주 변한다. 코드 관리를 호스트에서 하고 싶다.
소스 코드가 변경될 때 도커 컨테이너를 내리고 다시 올려야하는 것이 참 이상하다.
Continous deployment (무중단 배포)
배포하는 과정중에 down 했다가 up하는 과정에서 잠깐 서비스가 중단되어야하는 경우가 생긴다. 이를 로드 밸런서를 이용하여 해결해보자. 보통 로드밸런서는 HA proxy 나 NGINX를 사용한다.
Blue : 기존 버전
Green : 새로운 버전
1. 배포 요청이 들어온다.
2. Green 환경에서 테스트를 돌린다. 테스트가 통과하면 Green 에 배포한다..
3. Green 환경으로 Blue 의 트래픽을 돌리도록 한다.
4. Blue 의 트래픽을 끊는다.
문제가 생길경우 다시 트래픽을 전부 Blue 로 돌린다.
배포의 실패 여부를 Slack 알림으로 받아보자
1. Jenkins 에 Slack plugin 설치
2. Job 의 빌드후 조치에 Slack Notifications 를 추가해준다.
'[정리] 기능별 개념 정리 > Jenkins' 카테고리의 다른 글
깃허브 연동 -> Web hook -> 자동 빌드 (0) | 2019.06.28 |
---|---|
Jenkins 기초 (빌드 후 SSH 로 서버에 업로드) (0) | 2019.06.19 |
Jenkins 기초 (0) | 2019.06.18 |