Jenkins 공유 라이브러리를 활용한 로그 색상화 출력 구현

1. AnsiColor 플러그인 설치

Jenkins 환경에서 컬러 출력을 활성화하기 위해 AnsiColor 플러그인을 설치합니다. 이 플러그인은 콘솔 출력에 색상을 적용할 수 있게 해줍니다.

2. 플러그인 문법 확인

설정된 파이프라인 프로젝트에서 파이프라인 문법 탭을 열고, 해당 플러그인의 사용법을 확인합니다.

  • 해당 플러그인의 문서를 참조하여 ansiColor 블록 내에서 색상 코드를 사용하는 방법을 익힙니다.

3. 공유 라이브러리 스크립트 수정 및 출력 메서드 개선

공유 라이브러리 내부의 tools.groovy 파일을 수정하여 컬러 출력 기능을 확장합니다.

package org.devops

def formatOutput(message, style) {
    def colorMap = {
        red     -> "\u001B[40;31m >>>>>>>>>>> ${message} <<<<<<<<<<< \u001B[0m"
        blue    -> "\u001B[47;34m ${message} \u001B[0m"
        green   -> "\u001B[40;32m >>>>>>>>>>> ${message} <<<<<<<<<<< \u001B[0m"
        yellow  -> "\u001B[43;30m ⚠️  ${message} ⚠️  \u001B[0m"
    }

    ansiColor('xterm') {
        println(colorMap[style] ?: message)
    }
}

4. Jenkinsfile 업데이트 및 파이프라인 구성

기존의 Jenkinsfile를 아래와 같이 재구성하여 공유 라이브러리의 함수를 호출합니다.

#!groovy

@Library('jenkinslib') _

def utils = new org.devops.tools()

pipeline {
    agent any

    options {
        timestamps()
        skipDefaultCheckout()
        disableConcurrentBuilds()
        timeout(time: 1, unit: 'HOURS')
    }

    stages {
        stage('Retrieve Source') {
            steps {
                timeout(time: 5, unit: 'MINUTES') {
                    script {
                        println('소스 코드 다운로드 중...')
                        utils.formatOutput('소스 코드 다운로드 중...', 'green')
                    }
                }
            }
        }

        stage('Build & Scan') {
            failFast true
            parallel {
                stage('Compile') {
                    steps {
                        timeout(time: 20, unit: 'MINUTES') {
                            script {
                                println('애플리케이션 빌드 진행...')
                                utils.formatOutput('빌드 완료', 'green')
                            }
                        }
                    }
                }

                stage('Static Analysis') {
                    steps {
                        timeout(time: 30, unit: 'MINUTES') {
                            script {
                                println('코드 스캔 수행 중...')
                                utils.formatOutput('스캔 완료', 'blue')
                            }
                        }
                    }
                }
            }
        }
    }

    post {
        always {
            script {
                println('모든 단계 완료')
            }
        }
        success {
            script {
                currentBuild.description = '\n ✅ 빌드 성공'
            }
        }
        failure {
            script {
                currentBuild.description = '\n ❌ 빌드 실패'
            }
        }
        aborted {
            script {
                currentBuild.description = '\n 🛑 빌드 취소'
            }
        }
    }
}

5. 파이프라인 실행 및 결과 확인

변경 사항을 저장하고 파이프라인을 실행하면, 콘솔 출력에 다양한 색상으로 구분된 메시지가 나타납니다. 특히 green, blue, red 등으로 단계별 상태를 시각적으로 인식할 수 있습니다.

태그: Jenkins shared library Pipeline ansiColor Groovy

7월 4일 21:44에 게시됨