[Jenkins]★★★CI/CD Process

seopppio·2024년 12월 23일

Jenkins

목록 보기
20/25

Work Flow

CI

준비물 : Dockerfile, Playbook in Ansible
1. Jenkins로, war파일 git에서 받아와 mvn 빌드하여 war파일 만들고, 그 파일을 ansible server에 copy한다
2. war파일을 가지고 있는 엔서블 서버에서 이미지를 만들기 위한 Dockerfile 실행
(해당 도커파일은, jenkins로 maven build 된 war파일을, tomcat 서버의 wepapps에 배포가 끝난 이미지를 만드는 도커파일이다)
3. 이미지 만들고, 허브에 올리고, 로컬에 있는 이미지 다시 삭제하는 Playbook으로 CI 마무리

Poll SCM을 활용해서 git에서 소스코드 변경될때마다 지속적으로 CI하게 할 것

CD

  1. CI 마지막 빌드 후 조치에 build other project 설정
  2. Ansible playbook 써서, hostpc인 kubernetes에 deployment랑, service 실행하는 project(item)을 연결 한다

실습

CI


4일 전 업로드

  • Dockerfile은, Tomcat 이미지에, Dockerfile이 있는 서버에 war파일(jenkins maven 빌드에 의해 빌드 된 것)을, tomcat 이미지의 /usr/local/tomcat/webapps에 복사하는 것
  • play북은, 위의 Dockerfile을 가지고, 이미지 빌드하고, 레퍼지토리에 push한 뒤, 이미지를 삭제한다

git, maven build, poll scm 정하고, ssh 서버 빌드 후 조치 다음과 같이 정한다
->ansible-server에서 저 플레이북 실행해서 CI과정인 Dockerfile 이용해서 이미지 만드는 것

Ansibleserver에서, 도커 로그인 및 도커 실행 필요
docker login -> 이후 도커허브 아이디 비번 입력
systemctl status docker
systemctl start docker

CD

빌드 후 조치에 앞서 만든 item 추가

1. 해당 item은 똑같이, git에서 코드 변경 있을 때, 알아서 git에 있는 소스코드 maven 빌드하고, 젠킨스 workplace에 저장, 이후 이것을 ssh로 copy해서 ansible 서버로 옮기고, ansible서버에서는 playbook 두개 사용하는데, 각 playbook은, kubernetes pc에서 deployment와 service 실행하는것
2. 해당 디플로이먼트는 CI에서 배포한 이미지를 받아서 컨테이너로 실행하고 그것을 pods로 감싼 뒤, 또 디플로이먼트로 감싼것
3. 서비스는 해당 디플로이먼트의 포트를 열어주는 것
-> CI에 연결 된 CD 역할을 하는 item의 빌드 후 조치

둘이 연결할거니, CD부분의 item은 Poll SCM 꺼두자

결과 -> Poll SCM 사용

git 코드 수정 전

git 코드 수정 및 커밋 및 push

곧장 돌아간다



CI 빌드 완료


CD 빌드 완료

서비스까지 적용 완료

0개의 댓글