Jenkins

우진혁·2024년 5월 13일
0

Study

목록 보기
5/13

젠킨스는 오픈소스 CI/CD(지속적통합, 배포) 관리 도구로, 소프트웨어 빌드, 테스트, 배포등을 자동화관리하며 다양한 플러그인과 함께 여러언어와 프레임 워크를 지원한다.

CI는 Continuous Integration 즉, 지속적인 통합이라는 의미.

지속적인 통합이란,
어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합히는 것을 의미한다.

CD는 Continuous Delivery 혹은 Continuous Depolyment 두 용어 모두의 축약어 이며
해석하자면 지속적인 서비스 제공 혹은 지속적인 배포 라는 의미.

정리하자면, CI가 새로운 소스코드의 빌드, 테스트, 병합까지를 의미하였는데,
CD는 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것을 의미합니다.

특징

① 마스터-슬레이브 구성
마스터-슬레이브 아키텍쳐 구성으로, 마스터노드와 하나 이상의 슬레이브 노드로 구성되어 다양한 환경에서 동시에 빌드,테스트 수행 및 부하분산과 확장성 제공

  • 마스터 : 작업관리, 스케줄링, 플러그인 관리 등 진행
  • 슬레이브 : 빌드 및 테스트 작업 진행

② Jenkinsfile (파이프라인 스크립트)
Jenkinsfile : Groovy 언어로 작성된 스크립트 파일, 소스코드와 함께 버전관리 시스템에 저장된다.
젠킨스의 핵심은 파이프라인인데, Jenkinsfile은 각 단계를 순차적으로 실행하거나 병렬로 실행하는 등의 로직을 정의하며 빌드, 테스트, 배포 등의 작업을 구성한다.

③ SCM 트리거 및 웹훅
소스 코드 관리(SCM) 시스템과 통합하여 변경 사항이 발생할 때마다 자동으로 빌드 및 테스트를 실행할 수 있으며 이를 위해 웹훅이나 폴링 방식을 사용하여 SCM 시스템에서 변경 사항을 감지하고 해당 작업을 트리거한다.

④ 결과 및 로그 저장
젠킨스는 빌드 및 테스트 작업이 완료되면 해당 결과와 로그를 저장한다.
이를 통해 빌드 실패 원인을 찾거나 테스트 결과를 검토할 수 있다.

④ 알람
젠킨스는 다양한 알림 방법을 제공하여 빌드 및 테스트 결과를 개발자들에게 전달하며 이메일, 슬랙 등 다양한 채널을 통해 알림을 받거나 플러그인을 통해 추가적인 알림 방식을 확장할 수 있다

⑤ 로그 및 메트릭 수집 및 분석
젠킨스는 빌드, 테스트 및 배포 과정에서 발생하는 로그와 메트릭을 수집하고 분석하고 이를 통해 성능 문제, 장애, 최적화 포인트 등을 식별할 수 있다.

Jenkins의 동작원리

① 개발자가 소스 코드 변경 사항을 SCM 시스템에 푸시한다.

② 젠킨스는 웹훅이나 폴링 방식을 통해 변경 사항을 감지하고 Jenkinsfile에 정의된 파이프라인을 실행한다.

③ 젠킨스는 마스터 노드에서 슬레이브 노드로 작업을 할당하고 슬레이브 노드에서 빌드, 테스트 및 배포 작업을 수행한다.

④ 파이프라인의 각 단계에서 필요한 경우 플러그인을 사용하여 다양한 도구와 통합하여 작업을 수행할 수 있다.

⑤ 작업이 완료되면 젠킨스는 결과와 로그를 저장하고 개발자에게 알림을 전송한다.

코드 PUSH -> 파이프라인 실행 -> 작업할당 및 배포 -> 작업정보 저장 및 알림발송

-> 업무협업을 위해 꼭 필요한 솔루션으로 생각이 듦..

사용 목적

  • 지속적 통합 및 배포
  • 다양한 플러그인 지원
  • 확장성 및 분산 처리
  • 다양한 운영체제에서 사용
  • Jenkinsfile(소스코드와 함께 파이프라인 버전 관리 가능)
  • 무료 오픈소스
  • 원하는 방식대로 CI/CD 파이프라인을 구성 가능
  • 모니터링 및 알림 기능

-> 여러가지 효율적인 측면에서 봤을때 현재 기술에서 안쓰일수가 없다고 생각한다.

profile
개인 발전과 성장을 위한 정리노트

0개의 댓글