IT용어위키


젠킨스

젠킨스(Jenkins)는 소프트웨어 개발에서 자동화된 빌드, 테스트, 배포를 수행하는 오픈 소스 자동화 프로그램이다. CI/CD(지속적 통합/지속적 전달·배포)를 구현하기 위한 대표적인 도구 중 하나로 널리 사용된다.

개요

젠킨스는 Java 기반으로 개발되었으며 다양한 플러그인과 확장 기능을 제공한다. 개발자가 코드 변경을 저장소에 커밋하면 젠킨스가 자동으로 빌드와 테스트를 실행하고, 필요할 경우 프로덕션 환경이나 기타 배포 환경으로 전달하는 파이프라인을 구성할 수 있다.

특징

  • 오픈 소스 및 무료 사용 가능
  • 수천 개의 플러그인 지원
  • Git, GitHub, GitLab, Bitbucket 등 주요 저장소와 통합
  • Docker, Kubernetes, AWS, Azure 등 다양한 인프라와 연동
  • Declarative Pipeline 및 Scripted Pipeline 두 방식 지원
  • 분산 빌드(Distributed Build) 기능 제공

역사

  • 젠킨스는 원래 Hudson이라는 이름의 프로젝트에서 시작되었다.
  • Oracle과의 명명권 분쟁 이후 커뮤니티가 독립하며 현재의 이름인 Jenkins로 변경되었다.
  • 이후 오픈 소스 커뮤니티 중심으로 활발한 개발이 진행되고 있다.

아키텍처

마스터-에이전트 구조

젠킨스는 기본적으로 다음과 같은 구조를 갖는다:

  • 마스터(Master)
사용자 관리, 파이프라인 실행 지시, UI 제공, 에이전트 관리 등을 수행한다.
  • 에이전트(Agent)
마스터가 지시한 빌드·테스트 작업을 실제로 수행하는 노드이다.
여러 에이전트를 구성하여 병렬 빌드 또는 환경별 빌드를 실행할 수 있다.

파이프라인

젠킨스 파이프라인은 소스 코드로 빌드·테스트·배포 과정을 정의하는 기능이다. 둘 중 하나의 방식을 선택해 사용할 수 있다.

Declarative Pipeline

간결하고 구조화된 문법을 사용하며 권장되는 방식이다.

예시:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps { echo 'Building...' }
        }
        stage('Test') {
            steps { echo 'Testing...' }
        }
        stage('Deploy') {
            steps { echo 'Deploying...' }
        }
    }
}

Scripted Pipeline

더 강력하고 유연하며, Groovy 기반으로 작성된다.

예시:

node {
    stage('Build') {
        echo 'Building...'
    }
    stage('Test') {
        echo 'Testing...'
    }
    stage('Deploy') {
        echo 'Deploying...'
    }
}

주요 기능

  • 자동 빌드 및 테스트
  • 지속적 통합(CI)
  • 지속적 전달 및 배포(CD)
  • 멀티 브랜치 파이프라인
  • 웹 UI 및 REST API 제공
  • 이메일, Slack 등 알림 기능 지원
  • 자원 관리 및 에이전트 확장

플러그인

젠킨스의 강점은 플러그인 생태계이다. 예시 플러그인 목록:

  • Git Plugin
  • GitHub Integration Plugin
  • Pipeline Plugin
  • Blue Ocean (시각적 파이프라인 UI)
  • Docker Plugin
  • Kubernetes Plugin
  • JUnit Plugin

수천 개의 플러그인이 존재하며, 기능은 지속적으로 확장되고 있다.

사용 사례

  • 코드 변경 시 자동 빌드 및 테스트
  • 여러 환경(개발, 스테이징, 운영)으로의 자동 배포
  • Docker 이미지 빌드 및 Registry 푸시
  • Kubernetes 배포 자동화
  • 모놀리식 또는 마이크로서비스 CI/CD 구축

장점

  • 성숙한 생태계와 방대한 사용자 커뮤니티
  • 뛰어난 확장성과 플러그인 가용성
  • 다양한 언어·플랫폼·도구와 통합 가능
  • 자유도가 높은 파이프라인 정의

단점

  • 설정이 다소 복잡할 수 있음
  • 플러그인 의존도가 높아 관리가 까다로울 수 있음
  • UI가 현대적이지 않다는 평가도 존재
  • 서버 관리와 확장 시 오버헤드 발생 가능

경쟁 도구

  • GitHub Actions
  • GitLab CI/CD
  • CircleCI
  • Travis CI
  • Bamboo
  • TeamCity

같이 보기

참고 문헌

  • Jenkins 공식 문서
  • Jenkins Pipeline Documentation
  • Jenkins Plugin Index
  • Hudson 프로젝트 역사

  출처: IT위키 (IT위키에서 최신 문서 보기)

  * 본 페이지는 IT Wiki에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 IT Wiki에서 확인하세요!