Jenkinsfile 과 UI 에서의 pipeline

Jenkins에서 파이프라인을 선언하는 두 가지 주요 방식, 즉 Jenkins UI 내에서 직접 파이프라인을 선언하는 방법과 Jenkinsfile을 사용하여 파이프라인을 구성하는 방법의 차이점 및 각각의 장단점을 아래 표로 정리하였습니다.

구분Jenkins UI를 통한 파이프라인 선언Jenkinsfile을 사용한 파이프라인 구성
정의 위치Jenkins 서버의 UI에서 직접 구성소스 코드 저장소에 파일로 정의
버전 관리버전 관리되지 않음소스 코드 저장소를 통해 버전 관리 가능
복제 및 공유 용이성재사용 및 공유 어려움Jenkinsfile 공유를 통해 쉽게 재사용 및 배포 가능
보안Jenkins 서버 접근 권한 필요소스 코드 저장소의 접근 권한으로 관리 가능
구성 용이성UI를 통해 비교적 쉽게 구성 가능구성이 복잡할 수 있으나, 파이프라인의 세밀한 제어 가능
갱신 및 반복 작업UI를 통해 직접 갱신 필요소스 코드의 일부로서 갱신 및 반복 작업 용이
오류 추적 및 로그로그 추적이 비교적 간단자세한 로그 제공 및 오류 추적 용이
다중 환경 지원단일 Jenkins 환경에 한정다양한 환경 및 설정에 적용 가능

1. 설명

  • 버전 관리: Jenkinsfile을 사용하는 방식은 파이프라인의 버전을 소스 코드와 함께 관리할 수 있으므로, 변경 사항 추적 및 이전 버전으로의 롤백이 가능합니다.
  • 복제 및 공유 용이성: Jenkinsfile은 텍스트 파일로써 다른 프로젝트나 조직에 쉽게 재사용할 수 있습니다. 반면, UI를 통한 설정은 그 설정을 다른 서버로 직접 복사하거나 이전하기 어렵습니다.
  • 보안: Jenkins UI를 통한 설정은 Jenkins 서버에 대한 접근 권한이 필요하며, 이는 보안상의 위험을 증가시킬 수 있습니다. Jenkinsfile 사용 시, 보안 관리가 소스 코드 저장소의 접근 권한 관리를 통해 이루어집니다.
  • 오류 추적 및 로그: Jenkinsfile은 복잡한 로그와 오류 추적 기능을 제공하여 파이프라인 실행 중 발생하는 문제를 더 자세히 진단할 수 있게 합니다.

1-1. Jenkins 선언적 파이프라인(Declarative Pipeline)의 기본 구조

선언적 파이프라인은 Jenkins에서 제공하는 더 새롭고 구조화된 방식입니다. 이 방식은 pipeline 블록을 통해 전체 파이프라인 작업을 정의하며, 각 단계를 stages, stage, 그리고 steps 구조로 명확히 구분하여 표현합니다. 이 구조는 파이프라인의 각 단계를 명확하게 시각화하고 관리하기 쉽게 만들어 주며, Jenkins UI에서도 직관적으로 파악할 수 있습니다.

장점:

  • 코드가 읽기 쉽고 작성하기도 쉽습니다.
  • 파이프라인의 구조를 명확하게 시각화할 수 있습니다.
  • 오류 발생 시 정확한 위치를 쉽게 찾을 수 있습니다.
Groovy
pipeline {
    agent any

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

1-2. Jenkins 스크립트 파이프라인(Scripted Pipeline)의 핵심

스크립트 파이프라인은 보다 유연한 접근 방식을 제공하며, node 블록을 사용하여 파이프라인의 실행 환경을 정의합니다. 이 방식은 복잡한 로직이나 조건부 실행이 필요한 경우 유용하며, Groovy 언어의 모든 기능을 사용할 수 있습니다. stage 블록은 사용할 수도 있지만, 필수는 아니므로 더 동적인 파이프라인 구성이 가능합니다.

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

장점:

  • 복잡한 로직 구현 가능
  • 조건문, 반복문 등 프로그래밍적 요소를 포함할 수 있음
  • 높은 맞춤화와 유연성 제공

2. 차이점과 선택 기준

선언적 파이프라인은 구조화된 설정과 명확한 규칙을 제공하며, 파이프라인의 설정과 관리를 간단하게 만듭니다. 반면, 스크립트 파이프라인은 보다 복잡하고 동적인 요구사항에 적합하며, 스크립팅에 익숙한 개발자에게 유리합니다.

2-1. 언제 선언적 파이프라인을 사용해야 할까요?

  • 파이프라인 구조를 간단하고 명확하게 유지하고 싶을 때
  • 직관적인 문법과 구조가 필요할 때
  • 파이프라인의 시각화가 중요한 경우

2-2. 언제 스크립트 파이프라인을 사용해야 할까요?

  • 복잡한 조건 또는 변화하는 환경 설정이 필요할 때
  • 프로그래밍 논리를 파이프라인에 포함시켜야 할 때
  • 최대한의 유연성을 필요로 할 때

#선언적 파이프라인, #스크립트 파이프라인

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top