본문 바로가기
VCS/CICD

젠킨스 파이프라인 이해

by Jinger 2024. 12. 31.

서론

   젠킨스 파이프라인은 DevOps 워크플로에서 중요한 구성 요소로, 코드의 빌드, 테스트, 배포를 자동화하여 소프트웨어 개발 프로세스를 효율적으로 관리할 수 있다.


젠킨스 파이프라인

   파이프라인(Pipeline)은 작업을 자동화된 일련의 단계로 정의하고 실행하는 프로세스를 말한다. 소프트웨어 개발에서 파이프라인은 주로 코드 빌드(Build), 테스트(Test), 배포(Deploy) 등의 과정을 자동화하여 개발과 배포를 빠르고 효율적으로 수행하는 데 사용된다.

   젠킨스 파이프라인은 젠킨스에서 제공하는 플러그인 기반 기능으로, 코드를 통해 자동화된 워크플로를 정의할 수 있다. 이를 통해 단순한 빌드 작업부터 복잡한 CI/CD 프로세스까지 설정이 가능하다.

파이프라인의 장단점

장점

  • 코드로 워크플로 정의: 워크플로가 스크립트로 관리되므로 버전 관리 및 이식성이 뛰어나다.
  • 복잡한 작업 지원: 분기, 병렬 처리, 조건부 실행 등 고급 작업을 처리할 수 있다.
  • 플러그인 확장성: 다양한 플러그인을 활용하여 기능을 확장 가능.

단점

  • 학습 곡선: 처음 사용하는 사용자에게는 구문과 개념이 복잡할 수 있다.
  • 디버깅 어려움: 스크립트 기반이므로 오류 발생 시 원인을 파악하기 어려울 수 있다.

파이프라인 용어 이해

  • Stage: 파이프라인에서 주요 단계를 정의한다.
  • Step: 각 단계에서 실행되는 작업을 나타낸다.
  • Agent: 파이프라인 작업이 실행될 환경을 지정한다.
  • Node: 파이프라인이 실행되는 젠킨스의 실행 단위이다.
  • PipeLine: 전체 빌드 프로세스를 정의하는 코드를 뜻한다.

파이프라인 구문

선언형 파이프라인

   선언형 파이프라인은 젠킨스 파이프라인을 단순하고 명확하게 정의할 수 있는 구문이다.

pipeline {
    agent any	// 젠킨스의 모든 에이전트에서 실행할 수 있다.
    stages {
        stage('Build') {	// Bilud 스테이지 블록 정의
            steps {
                echo 'Building...'	// 스텝 정의
            }
        }
        stage('Test') {	// Test 스테이지 블록 정의
            steps {
                echo 'Testing...'
            }
        }
        stage('Deploy') {	// Deploy 스테이지 블록 정의
            steps {
                echo 'Deploying...'
            }
        }
    }
}

스크립트형 파이프라인

   스크립트형 파이프라인은 더 높은 유연성을 제공한다.

node {	// 모든 에이전트에서 실행할 수 있다.
    stage('Build') {	// Build 스테이지 블록 정의
        echo 'Building...'
    }
    stage('Test') {	// Test 스테이지 블록 정의
        echo 'Testing...'
    }
    stage('Deploy') {	// Deploy 스테이지 블록 정의
        echo 'Deploying...'
    }
}

 

젠킨스에서 파이프라인 정의

파이프라인 속도/내구성 오버라이드

  • pipeline 블록에서 options를 통해 속도와 내구성을 설정할 수 있다.
    • PERFORMANCE_OPTIMIZED: 성능에만 최저고하된 가장 빠른 설정, 실행 중인 파이프라인을 저장하려면 클린 셧다운을 해야한다.
    • Less durability, a bit faster: 내구성은 낮고, 약간 빠른 설정
    • Maximum durability but slowest: 내구성 최대이나, 가장 느린 설정이다.
pipeline {
    agent any
    options {
        durabilityHint 'PERFORMANCE_OPTIMIZED'
    }
    stages {
        stage('Example') {
            steps {
                echo 'Optimized pipeline'
            }
        }
    }
}

자바 API를 릴리스하는 파이프라인 작업 생성

파이프라인 작업 생성

  • 젠킨스 대시보드에서 새 작업(New Item) 클릭.
  •  파이프라인 선택 후 작업 이름 입력.

파이프라인 정의

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git url: 'https://github.com/username/JavaAPI.git', branch: 'main'
            }
        }
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                sh 'mvn deploy'
            }
        }
    }
}
node {
    def mvnHome
    stages {
        stage('Checking out code') {
            branch: 'main', credentialsId:'MyGitSSHCredentials'
                git url: 'https://github.com/username/JavaAPI.git'
            }
        }
        stage('Deploying CalculatorAPI on Nexus Repository') {
            mvnHome = tool 'MyMaven'
            withEnv([MVN_HOME$mvnHome]){
                bat '%MVN_HOME%\\bin\\mvn deploy'
            }
        }
    }
}

파이프라인 작업 실행 및 릴리스

작업 실행

  • 생성된 파이프라인 작업의 Build Now 버튼을 클릭하여 실행.
  • 각 단계의 로그와 상태를 Console Output에서 확인 가능.

릴리스 확인

  • 넥서스 리포지터리 또는 배포된 환경에서 자바 API가 제대로 릴리스되었는지 검증.
반응형

댓글