젠킨스란?

NNIIE·2023년 3월 28일
3

CI/CD

목록 보기
1/1
post-thumbnail

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





CI/CD

일단 CI/CD 부터 짚고 넘어가자
CI/CD는 지속적인 통합(Continuous Integration)과 지속적인 배포(Continuous Deployment)의 약자로 소프트웨어 개발 및 배포의 자동화를 통해 빠르고 안정적인 제품 출시를 목표로 하는 개발 방법론이다.

  • CI (지속적인 통합)
    CI는 개발자들이 작성한 코드를 중앙 저장소에 자주 통합하고, 자동화된 빌드와 테스트를 통해 문제를 빠르게 발견하고 해결하는 것이다. 이렇게 하면 개발자들이 서로의 코드와 충돌 없이 효율적으로 협업할 수 있다.
  • CD (지속적인 배포)
    모든 변경사항을 자동화된 테스트와 빌드를 거친 후, 실제 사용자에게 자동으로 배포하는 것이다. 이렇게 함으로써 새로운 기능이나 수정사항을 빠르게 사용자에게 제공할 수 있게된다.




특징

마스터-슬레이브 아키텍처

  • 마스터 노드 : 작업 관리, 스케줄링, 플러그인 관리 등을 담당
  • 슬레이브 노드 : 실제 빌드 및 테스트 작업을 수행

젠킨스는 마스터 노드와 하나 이상의 슬레이브 노드로 구성된다.
이러한 구조를 통해 다양한 환경에서 동시에 빌드와 테스트를 수행할 수 있으며, 부하 분산 및 확장성을 제공한다.



Jenkinsfile (파이프라인 스크립트)

  • Jenkinsfile : Groovy 언어로 작성된 스크립트 파일, 소스코드와 함께 버전관리 시스템에 저장된다.

젠킨스의 핵심은 파이프라인이다.
Jenkinsfile은 각 단계를 순차적으로 실행하거나 병렬로 실행하는 등의 로직을 정의하며 빌드, 테스트, 배포 등의 작업을 구성한다.



SCM 트리거 및 웹훅

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



결과 및 로그 저장

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



알람

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



로그 및 메트릭 수집 및 분석

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





동작원리

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

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

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

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

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





쓰는 이유

  • 지속적 통합 및 배포 가능
  • 다양한 플러그인 지원
  • 확장성 및 분산 처리
    • 마스터-슬레이브 아키텍처를 통해 분산 처리를 지원하기 때문에 여러 빌드 및 테스트 작업을 동시에 수행할 수 있으며, 확장성이 높아진다.
  • 다양한 운영체제에서 사용 가능
  • Jenkinsfile
    • 소스코드와 함께 파이프라인 버전을 관리할 수 있다.
  • 오픈소스이기 때문에 무료이다.
  • 원하는 방식대로 CI/CD 파이프라인을 구성 가능
  • 모니터링 및 알림 기능




사용 전략

  • 젠킨스를 클라우드 환경에서 실행하면, 하드웨어 및 인프라 관리에 들어가는 시간과 비용을 절약할 수 있다.

  • 젠킨스 마스터 및 슬레이브 노드를 적절한 규모로 구성하고 리소스를 효율적으로 사용하도록 최적화 한다.

  • 필요에 따라 동적으로 슬레이브 노드를 생성하고 제거하는 클라우드 에이전트 기능을 사용하면 좋다.

  • 파이프라인 스크립트는 재사용 가능하고 모듈화된 구조로 작성한다.

  • 플러그인을 사용할 때는 호환성에 주의한다.

  • 젠킨스에서 보안 설정을 철저히 관리한다.

3개의 댓글

comment-user-thumbnail
2024년 1월 4일

나는 동의한다. 분석 과정에서 매우 좋은 효과가 있습니다.
https://wordleunlimited.io

답글 달기
comment-user-thumbnail
2024년 3월 30일

Going to graduate school was a positive decision for me. I enjoyed the coursework, the presentations, Amitabh Bachchan Age https://apunkagames.today/amitabh-bachchan-biography-height-age-family-more/

답글 달기
comment-user-thumbnail
2024년 8월 31일

你的文章非常精彩!对Wordle游戏的分析真是太棒了,非常感谢你的分享!
https://clinmedjournals.org/wordle-unlimited/

답글 달기