[Jenkins] Jenkins 란?

leejk1072·2025년 1월 5일

클라우드

목록 보기
5/8

더 이상 미룰 수는 없는 젠킨스 설정 포스팅 😅
이러 저러한 이유들로 미루다가, 생각난 김에 정리해보려 합니다.

포스팅은 1부, 2부, 3부 로 나누어 작성할 예정입니다.

  • 1부: Jenkins 란? ✅
  • 2부: Docker와 Jenkins
  • 3부: Jenkins 설정하기

참고
Jenkins를 설치하는 여러 방법이 있지만, 저는 Docker를 사용하는 환경에서 Jenkins를 사용하고자 합니다.


1. Jenkins란?

Jenkins는 CI/CD 파이프라인 및 워크플로우를 설계하는 데 사용되는 도구로, 자동화된 시스템 구축을 지원합니다.

1-1. 주요 역할

  • Jenkins는 소스코드 형상관리 시스템(Git, SVN 등)에서 코드를 가져와 빌드, 단위 테스트를 진행하고, 최종적으로 배포 가능한 형태로 패키징합니다.
  • Jenkins는 코드의 변경사항을 자동으로 감지하여, 빌드 및 테스트 과정을 자동으로 실행합니다.
  • 개발 환경부터 프로덕션 환경까지의 각 단계를 자동화하여, 빠른 피드백과 효율적인 배포를 가능하게 만듭니다.

1-2. CI/CD 툴 비교

  • Jenkins 외에도 CircleCI, TeamCity, Bamboo, GitLab 등이 존재.
  • 이중 Jenkins는 오픈소스로 제공되는 유일한 CI/CD 툴.
    • 다른 제품들은 일부 기능은 무료지만, 특정 기능은 유료로 전환해야 함.

1-3. Jenkins의 특징

  • 내장 기능: 일부 CI/CD 툴보다 부족할 수 있지만, 플러그인통합성은 매우 풍부함.
  • 구축 방식:
    • 자체적으로 서버를 구축하거나(On-Premise), 클라우드 환경(Cloud)에서 사용 가능.
  • 비용: Jenkins는 오픈소스로 제공되며, 무료로 사용 가능

1-4. Jenkins의 장단점

  • 장점:
    • 무료, 다양한 레퍼런스, 풍부한 플러그인.
    • 주요 플러그인 예시:
      • Build Plugins: Maven, Ant, Gradle
      • VCS Plugins: Git, SVN
      • Language Plugins: Java, Python, Node.js
  • 단점:
    • JIRA나 Redmine 같은 이슈 트래킹 도구와의 연계는 제한적.

📍 Jenkins 설치 링크
젠킨스 설치 링크


2. Jenkins Pipeline

2-1. CI/CD 기본 흐름

  • 개발팀이 코드 작업 완료 → VCS(SCM)에 저장 → 빌드 → 단위 테스트 → 통합 테스트 → 고객 테스트(UAT 환경) → 프로덕션 배포.
  • CI/CD 도구는 이러한 과정을 자동화하여 각 단계로 넘어가도록 구성합니다.

2-2. Jenkins의 단위: Item

  • Jenkins 작업은 Item이라는 단위로 생성됩니다.
    • 각 단계별로 독립적인 Item으로 구성 가능.
    • 여러 Item을 묶어서 Pipeline으로 구성할 수도 있음.

2-3. Jenkins Pipeline이란?

  • CI/CD 작업에 필요한 파이프라인을 구현하고 통합하는 Jenkins 플러그인.
  • Jenkins DSL(고유한 문법 체계)을 사용하여 Pipeline Script를 작성하며, 이 스크립트 파일은 Jenkinsfile로 저장됩니다.

2-4. DSL이란?

  • Domain Specific Language의 약자로, 특정 도메인에 특화된 언어.
    • 예: Jenkinsfile, Dockerfile.
    • Jenkinsfile은 Jenkins Pipeline을 정의하는 스크립트 파일입니다.

3. Jenkinsfile

Jenkinsfile은 크게 두 가지 방식으로 작성할 수 있습니다:
1. 선언형(Declarative): 간결하고 직관적인 문법 제공. Jenkins Pipeline 설정 시 기본적으로 권장되는 방식.
2. 스크립트형(Scripted): Groovy 기반의 유연한 스크립트 작성 가능. 복잡한 작업에 적합.

// Jenkinsfile 예제 (선언형 방식)
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

// Jenkinsfile 예제 (스크립트형 방식)
node {
    try {
        stage('Build') {
            echo 'Building...'
        }
        
        stage('Test') {
            echo 'Running tests...'
        }
        
        stage('Deploy') {
            echo 'Deploying...'
        }
    } catch (Exception e) {
        currentBuild.result = 'FAILURE'
        throw e
    } finally {
        echo 'Cleaning up...'
    }
}

0개의 댓글