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. 언제 스크립트 파이프라인을 사용해야 할까요?
- 복잡한 조건 또는 변화하는 환경 설정이 필요할 때
- 프로그래밍 논리를 파이프라인에 포함시켜야 할 때
- 최대한의 유연성을 필요로 할 때
#선언적 파이프라인, #스크립트 파이프라인