Jenkins 파이프라인을 통한 자동화 빌드 구성

1. 파이프라인 기반의 빌드 설계

다수의 작업을 순차적으로 연결하여 자동화된 빌드 흐름을 구현하는 두 가지 방식이 존재한다.

  • 직접 상위/하위 작업 간 의존성을 설정하여 순차 실행하는 방식
  • 전체 흐름을 관리할 별도의 파이프라인 프로젝트를 생성하고, 각 단계별 작업을 정의하는 방식

2. 작업 간 직접 의존성 설정

2.1 하위 작업 지정 (Downstream Job)

간단한 설정이 가능하지만, 각 작업 내부에서만 설정이 가능하며, 전체 의존성 구조를 파악하기 어렵다. 또한 동일한 작업을 여러 흐름에서 재사용할 수 없다. 빌드 후 작업에서 "다른 프로젝트 빌드" 옵션을 통해 다음 단계를 지정할 수 있다. 설정 후 해당 작업 페이지에서 "하위 프로젝트" 정보를 확인할 수 있다.

2.2 상위 작업 지정 (Upstream Job)

작업 간 흐름을 반대로 정의하는 방식으로, 특정 작업이 완료되면 그에 종속된 작업들이 자동으로 시작되도록 구성할 수 있다.

3. 다중 작업을 포함하는 파이프라인 구성

파이프라인 기능을 사용하기 위해 다음 조건을 충족해야 한다:

  • Jenkins 버전 2.x 이상
  • Pipeline 플러그인 설치

이 방식은 동일한 작업을 여러 흐름에서 재사용 가능하며, 모든 단계를 하나의 스크립트로 관리할 수 있다.

새로운 파이프라인 유형의 프로젝트를 생성하고, 다음과 같은 절차를 수행한다:

  1. 스크립트를 작성하여 저장
  2. 실행 시 그래픽적 파이프라인 구조를 확인할 수 있으며, 각 단계의 상태와 결과를 실시간으로 모니터링
  3. 클릭을 통해 구체적인 작업 정보를 탐색 가능

스크립트 기반 파이프라인 예시 (Groovy 기반)

pipeline {
    agent any
    stages {
        stage('빌드') {
            steps {
                echo '빌드 단계 시작'
                sh 'mvn clean compile'
            }
        }
        stage('테스트') {
            steps {
                echo '테스트 실행 중...'
                sh 'mvn test'
            }
        }
        stage('배포') {
            steps {
                echo '배포 준비 중...'
                sh 'mvn deploy'
            }
        }
    }
}

4. 다중 브랜치 파이프라인

Jenkins의 다중 브랜치 파이프라인은 소스 코드 관리 시스템(예: Git) 내 각 브랜치마다 자동으로 파이프라인을 생성하는 기능이다.

  • 각 브랜치에 맞는 독립적인 Jenkinsfile 지원 가능
  • 브랜치 자동 검출 및 관리, 각 브랜치의 파이프라인 자동 실행

새로운 작업 생성 시 다중 브랜치 파이프라인 선택 → 브랜치 소스 설정 → Jenkinsfile 경로 지정 → 스캔 트리거 조건 설정 → 완료 후 각 브랜치 이름과 일치하는 하위 작업이 자동 생성됨.

5. Pipeline-as-Code

5.1 개념 소개

파이프라인을 코드 형태로 정의함으로써 구성 변경을 버전 관리할 수 있는 접근 방식. 이는 환경 의존성 감소와 협업 개선을 가능하게 한다.

  • 마스터 노드 재시작에도 파이프라인이 유지됨
  • 단계별 일시 정지 및 사용자 입력 대기 가능
  • 복잡한 로직 처리를 위한 고급 기능 제공 (Groovy 스크립팅)
  • 커스텀 DSL 확장 가능 (플러그인 기반)

5.2 스크립트 위치 결정

두 가지 주요 방법 존재:

  • 직접 Jenkins UI에서 스크립트 작성
  • Jenkinsfile를 소스코드 저장소에 포함 → 코드 변경 시 자동으로 파이프라인 실행

권장 방식은 저장소에 Jenkinsfile를 배치하는 것. 이유:

  • 모든 브랜치 및 풀 리퀘스트에 대해 자동 파이프라인 생성 가능
  • 팀원 모두가 코드를 검토하고 수정 가능
  • 버전 제어, 리뷰, 반복 개선이 가능

5.3 파이프라인 스크립트 작성

Jenkins는 두 가지 문법을 지원한다:

  • 스크립트 형식: Groovy 기반, 유연하고 강력하지만 이해 난이도 높음
  • 선언 형식: 간결하고 가독성이 좋으며, 대부분의 사례에 적합

일반적으로 선언 형식을 권장. 복잡한 요구사항이 없는 경우 대부분의 사용 사례를 충족.

5.4 주요 파이프라인 단계 예시

  • 소스 코드 클론 (Git clone)
  • Maven 빌드 및 아티팩트 저장소(예: Artifactory) 전송
  • 단순 빌드 및 패키징
  • 빌드 결과 아카이빙
  • SonarQube 코드 품질 분석
  • 메일 알림 발송
  • 사용자 입력 대기 후 진행
  • 다중 노드에서 병렬 실행
  • 외부 Groovy 스크립트 참조 및 실행

6. 파이프라인 문법 규칙

파이프라인 스크립트는 반드시 Groovy 형식을 준수해야 하며, 유효성 검사 및 오류 방지를 위해 공식 문서를 참고하는 것이 좋다.

공식 문서 링크: Jenkins Pipeline 설명서

UI 상에서 "파이프라인 문법" 링크를 통해 도구를 활용해 스크립트 생성 가능.

7. 파이프라인 심화 학습

8. Blue Ocean 인터페이스

Blue Ocean은 파이프라인 작업을 보다 직관적이고 시각적으로 표현하는 새로운 인터페이스이다. 기존의 Freestyle 및 파이프라인 작업 모두를 지원.

  • 파이프라인 상태를 한눈에 파악 가능
  • 시각적 워크플로우로 파이프라인 생성 안내
  • 팀원의 역할에 맞춘 커스터마이징 가능
  • 오류 발생 시 정확한 위치 파악 및 조치 유도

8.1 Blue Ocean 설치 방법

두 가지 설치 옵션:

  • 기존 Jenkins에 플러그인으로 설치
  • Docker 컨테이너로 직접 실행
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins-blueocean \
  jenkinsci/blueocean

실행 후 http://localhost:8080/blue/pipelines 접속 시 블루 오션 인터페이스 열람 가능.

8.2 Blue Ocean을 통한 파이프라인 생성

메인 페이지에서 Open Blue Ocean 버튼 클릭 또는 직접 주소 접속 → 파이프라인 생성 선택.

  • 소스 저장소에 Jenkinsfile가 있으면 자동으로 파이프라인 생성 및 브랜치별 실행
  • 없을 경우, 블루 오션 내 편집기로 Jenkinsfile 작성 후 저장소에 업로드

태그: Jenkins Pipeline-as-Code Blue Ocean CI/CD Jenkinsfile

6월 1일 22:08에 게시됨