JenKins 개념 및 기능

Jenkins란???

다른 일상적인 개발 작업을 자동화할 뿐 아니라 파이프라인(Pipeline)을 사용해 소스코드 리포지토리에 대한 지속적인 통합과 지속적인 전달 환경을 구축하기 위한 방법을 제공하는 툴

 

그래서 뭐냐??

 

CI/CD 지속적인 통합, 배포를 가능하게 해주는 툴

 

 

CI/CD

CI

  • 하루에 여러 번 그들의 코드를 버전 제어 저장소에 체크하는 방법이다.
  • 오류를 빠르고 쉽게 찾을 수 있게 해 주며, 자동화된 빌드

 

 

CD

  • 버그 수정, 기능 및 구성 변경 사항을 프로덕트에 안정적으로 신속하고 지속적으로 배포할 수 있도록 해주는 프로세스
  • 빠른 버그 픽스가 가능하며 빠르게 배포 가능하다.

 

 

그렇다고 모든 과정을 대신해주냐??

  • Jenkins가 각각의 단계에 대한 스크립트 작성의 필요성을 없애주지는 않는다.
  • 하지만 사용자가 빌드, 테스트, 배포 도구 등 통합할 수 있는 방법을 제공해 준다.

 

 

Jenkins 기능

  1. 대시보드 제공
    • 여러 가지 배포 작업의 상황을 모니터링할 수 있다. 
  2. 배포 스크립트 실행가능
    • 배포 스크립트를 개발자 로컬에서도 실행할 수 있는데 젠킨스 안에서도 가능하다.
  3. 다양한 플러그인
    • 다양한 개발 환경, 다양한 개발 언어, 빌드 옵션을 제공하기 위한 플러그인을 제공한다.

 

 

Jenkins의 등장

  • Jenkins와 같은 CI툴이 등장하기 전에는 일정시간마다 빌드를 실행하는 방식이 일반적이었다.
  • 특히 개발자들이 당일 작성한 소스들의 커밋이 끝난 심야 시간대에 빌드가 타이머에 의해 진행되어 이를 Nightly-Build라고 했음.
  • 젠킨스의 등장으로 Git과 같은 버전관리 시스템과 연동하여 커밋을 감지하면 자동화 빌드가 작동하도록 설정 가능하다.

 

 

그래서 어떻게 CI/CD 하는 건데???

 

 

위는 간단하게 Docker를 이용하여 EC2 서버에 빌드 자동화를 시키는 일종의 가이드입니다.

  1. Docker로 Jenkins 이미지를 받아 컨테이너를 구성합니다.
  2. Jenkins에서 기본설정을 마친 후 필요한 플러그인을 설치한다.
  3. 프로젝트를 gitlab 등 VCS에 커밋 후 Jenkins 프로젝트에 레포지토리를 연결한다.
  4. 빌드 및 컨테이너 생성을 위한 빌드 파이프라인 구성

 

 

 

+ 추가

아래는 docker에 jenkins 이미지를 받아 컨테이너를 구축하는 간단한 코드 예시입니다.

sudo docker run 
--name jenkins 
-d 
-p 8888:8080 -p 50000:50000 
-v /home/ubuntu/jenkins:/var/jenkins_home 
-v /var/run/docker.sock:/var/run/docker.sock 
-u root 
jenkins/jenkins:lts

  • -d 옵션 : 백그라운드에서 동작
  • -p 옵션 : 포트 매핑
  • -v 옵션 : volume 연결
  • -u 옵션 : user 정보
  • jenkins/jenkins:lts : jenkins 이미지 최신 버전

'CS > 인프라' 카테고리의 다른 글

가상화와 하이퍼 바이저  (0) 2023.08.19
VPC란?? Virtual Private Cloud의 모든 것  (4) 2023.06.08
IaaS VS PaaS VS SaaS  (2) 2023.03.30
컨테이너와 가상머신의 차이점 with Docker  (2) 2023.01.26