내 잡다한 노트

젠킨스 Jenkins 본문

DevOps/Jenkins

젠킨스 Jenkins

peanutwalnut 2024. 11. 21. 21:18
 

젠킨스(Jenkins)란?

젠킨스(Jenkins)는 오픈소스 자동화 서버로, 소프트웨어 개발의 빌드(Build), 테스트(Test), 배포(Deploy) 과정을 자동화하기 위해 사용됩니다. 특히 CI/CD(지속적 통합 및 지속적 배포)를 구현하는 데 매우 유용하며, DevOps 환경에서 중요한 역할을 합니다.

 

주요 기능

  1. 지속적 통합(CI)
    코드가 변경될 때마다 자동으로 빌드와 테스트를 실행해 개발 주기를 단축하고 품질을 높입니다.
  2. 지속적 배포(CD)
    빌드가 성공하면 자동으로 애플리케이션을 배포해 배포 과정에서의 오류를 최소화합니다.
  3. 플러그인 시스템
    Jenkins는 1,800개 이상의 플러그인을 지원하여 다양한 개발 환경과 도구를 통합할 수 있습니다.
    예: Git, Docker, Kubernetes, Maven, Gradle 등.
  4. 분산 빌드
    Master-Agent 구조를 통해 여러 서버에서 병렬 빌드 및 작업을 수행할 수 있습니다.
  5. 다양한 언어 및 플랫폼 지원
    Java, Python, Ruby, C#, JavaScript 등 다양한 언어와 Windows, macOS, Linux 플랫폼을 지원합니다.

 

주요 구성 요소

  1. 파이프라인(Pipeline)
    파이프라인은 Jenkins에서 작업을 정의하는 코드입니다.
    • Declarative Pipeline: 읽기 쉽고 간결한 구문.
    • Scripted Pipeline: Groovy를 기반으로 복잡한 논리를 구현 가능.
    • pipeline {
          agent any
          stages {
              stage('Build') {
                  steps {
                      echo 'Building...'
                  }
              }
              stage('Test') {
                  steps {
                      echo 'Testing...'
                  }
              }
              stage('Deploy') {
                  steps {
                      echo 'Deploying...'
                  }
              }
          }
      }
  2. 노드(Node)
    빌드를 실행하는 서버로, Master와 Agent로 나뉩니다.
  3. 작업(Job)
    Jenkins에서 실행되는 기본 단위로, 빌드, 테스트, 배포 등의 작업을 정의합니다.
  4. 워크스페이스(Workspace)
    Jenkins가 작업을 실행하기 위해 소스 코드와 빌드 산출물을 저장하는 디렉터리입니다.

사용 사례

  1. 코드 통합 및 테스트
    • GitHub, GitLab과 통합하여 코드 변경 시 자동 빌드 및 테스트 수행.
  2. 애플리케이션 배포
    • Docker와 Kubernetes를 사용한 컨테이너 배포 자동화.
  3. 모니터링 및 알림
    • 작업 상태를 Slack, 이메일, Microsoft Teams 등으로 알림.

 

젠킨스의 한계

  1. 초기 설정 복잡성
    대규모 프로젝트에서 많은 설정이 필요할 수 있음.
  2. 리소스 사용량
    많은 작업을 동시에 실행하면 높은 서버 리소스를 소비.
  3. 플러그인 의존성
    플러그인이 많아질수록 관리가 복잡해질 수 있음.

 

젠킨스의 고급 기능

  1. 멀티 브랜치 파이프라인(Multi-Branch Pipeline)
    브랜치별로 개별적인 CI/CD를 수행할 수 있도록 지원합니다.
    예: develop, feature/*, hotfix/* 브랜치에 따라 자동으로 파이프라인을 실행.
  2. Blue Ocean
    젠킨스의 최신 UI 플러그인으로, 기존 UI보다 직관적이고 시각화된 파이프라인 설정을 지원합니다.
  3. Credentails Management
    젠킨스에서 민감한 정보를 안전하게 관리할 수 있도록 지원합니다.
    • 예: API 키, 비밀번호, SSH 키 등.
  4. Parameterized Builds
    빌드 실행 시 사용자가 직접 파라미터를 입력하여 다양한 설정으로 작업 가능.
  5. Trigger와 Hook
    • Webhook: GitHub, GitLab에서 코드가 푸시될 때 자동으로 빌드를 트리거.
    • Cron Trigger: 정해진 시간에 작업을 실행.
      예: 매일 새벽 3시에 데이터 백업.

 

젠킨스의 플러그인 사용 사례

  1. Git 플러그인
    GitHub, GitLab, Bitbucket 등의 버전 관리 시스템과 쉽게 연동 가능.
  2. Docker 플러그인
    Docker 컨테이너 안에서 빌드 작업을 실행하거나, Docker 이미지를 생성 및 푸시.
  3. Kubernetes 플러그인
    Kubernetes 클러스터에서 동적으로 에이전트를 생성해 작업 처리.
  4. Slack 플러그인
    빌드 결과를 Slack 채널로 전송해 팀원과 실시간 공유.
  5. JUnit 플러그인
    테스트 결과를 시각화하고, 실패한 테스트에 대한 세부 정보를 제공.

 

젠킨스와 최신 트렌드 결합

  1. 젠킨스와 GitOps
    • 젠킨스를 통해 Kubernetes 환경에서 GitOps 방식으로 배포 관리.
    • ArgoCD, Flux와 함께 활용 가능.
  2. 젠킨스와 AI/ML
    • 머신러닝 모델의 자동 학습 및 배포 파이프라인 구축.
    • TensorFlow나 PyTorch를 활용한 학습 결과 검증 및 배포.
  3. 젠킨스와 IaC(Infrastructure as Code)
    • Terraform이나 Ansible과 연계해 인프라를 자동으로 구성하고 배포.
  4. 젠킨스와 클라우드 통합
    • AWS, Azure, GCP에서 제공하는 클라우드 자원을 동적으로 활용.
    • AWS Lambda를 활용한 서버리스 애플리케이션 배포.

 

젠킨스 사용 시 최적화 팁

  1. 병렬 빌드
    대규모 프로젝트에서 빌드 시간을 줄이기 위해 병렬로 작업 수행.
  2. 플러그인 최소화
    필수 플러그인만 설치해 안정성을 유지.
  3. 에이전트 활용
    빌드 서버를 분리해 마스터 노드의 부하를 최소화.
  4. 모니터링 도구 통합
    Prometheus와 Grafana로 젠킨스 서버 상태를 모니터링.
  5. 백업 전략
    중요한 설정과 데이터를 주기적으로 백업.

'DevOps > Jenkins' 카테고리의 다른 글

Jenkinsfile 이란?  (0) 2024.11.27
Jenkins New item 페이지  (0) 2024.11.24
Jenkins agent  (0) 2024.11.24
Groovy 란?  (0) 2024.11.24
Jenkins 에이전트  (0) 2024.11.21