Jenkins란???
다른 일상적인 개발 작업을 자동화할 뿐 아니라 파이프라인(Pipeline)을 사용해 소스코드 리포지토리에 대한 지속적인 통합과 지속적인 전달 환경을 구축하기 위한 방법을 제공하는 툴
그래서 뭐냐??
CI/CD 지속적인 통합, 배포를 가능하게 해주는 툴
CI/CD
CI
- 하루에 여러 번 그들의 코드를 버전 제어 저장소에 체크하는 방법이다.
- 오류를 빠르고 쉽게 찾을 수 있게 해 주며, 자동화된 빌드
CD
- 버그 수정, 기능 및 구성 변경 사항을 프로덕트에 안정적으로 신속하고 지속적으로 배포할 수 있도록 해주는 프로세스
- 빠른 버그 픽스가 가능하며 빠르게 배포 가능하다.
그렇다고 모든 과정을 대신해주냐??
- Jenkins가 각각의 단계에 대한 스크립트 작성의 필요성을 없애주지는 않는다.
- 하지만 사용자가 빌드, 테스트, 배포 도구 등 통합할 수 있는 방법을 제공해 준다.
Jenkins 기능
- 대시보드 제공
- 여러 가지 배포 작업의 상황을 모니터링할 수 있다.
- 배포 스크립트 실행가능
- 배포 스크립트를 개발자 로컬에서도 실행할 수 있는데 젠킨스 안에서도 가능하다.
- 다양한 플러그인
- 다양한 개발 환경, 다양한 개발 언어, 빌드 옵션을 제공하기 위한 플러그인을 제공한다.
Jenkins의 등장
- Jenkins와 같은 CI툴이 등장하기 전에는 일정시간마다 빌드를 실행하는 방식이 일반적이었다.
- 특히 개발자들이 당일 작성한 소스들의 커밋이 끝난 심야 시간대에 빌드가 타이머에 의해 진행되어 이를 Nightly-Build라고 했음.
- 젠킨스의 등장으로 Git과 같은 버전관리 시스템과 연동하여 커밋을 감지하면 자동화 빌드가 작동하도록 설정 가능하다.
그래서 어떻게 CI/CD 하는 건데???
위는 간단하게 Docker를 이용하여 EC2 서버에 빌드 자동화를 시키는 일종의 가이드입니다.
- Docker로 Jenkins 이미지를 받아 컨테이너를 구성합니다.
- Jenkins에서 기본설정을 마친 후 필요한 플러그인을 설치한다.
- 프로젝트를 gitlab 등 VCS에 커밋 후 Jenkins 프로젝트에 레포지토리를 연결한다.
- 빌드 및 컨테이너 생성을 위한 빌드 파이프라인 구성
+ 추가
아래는 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 |