Jenkins

[Jenkins] Pipeline - 동적 변수 사용

비번변경 2023. 11. 7. 19:23

개요

2023.11.02 - [Jenkins] pipeline - 변수 선언 및 사용에서 변수를 선언하고 사용하는 방법에 대해서 알아보았다. 이 글에서는 변수를 동적인 값으로 초기화하는 방법에 대해서 정리해두려고 한다.

 

 

방법

환경 변수나 변수는 런타임에 초기화할 수 있다. shell scripts (sh), Windows batch scripts (bat) and PowerShell scripts (powershell) 등으로 종료 상태(returnStatus)나 표준 출력(returnStdout)으로 초기화하여 사용할 수 있다.

 

아래 예시는 script로 전달한 명령어를 실행한 결과의 표준 출력으로 변수를 초기화한 것이다.

CC = """${sh(
        returnStdout: true,
        script: 'echo "clang"'
    )}"""

 

아래 예시는 script로 전달한 명령어를 실행한 결과의 종료 상태로 변수를 초기화한 것이다.

EXIT_STATUS = """${sh(
        returnStatus: true,
        script: 'exit 1'
            )}"""

 

 

예시

테스트 젠킨스가 AWS EC2에서 동작하고 있는데, 간단히 해당 EC2의 인스턴스 타입을 확인해 본다.

SCRIPT = 'ec2metadata --instance-type'

pipeline {
    agent any
    
    stages {
        stage('Hello') {
            steps {
                script {
                    INSTANCE_TYPE = """${sh(
                            returnStdout: true,
                            script: "$SCRIPT"
                        )}"""
                }
                println "$INSTANCE_TYPE"
            }
        }
    }
}

만약 같은 명령어를 반복해서 사용해야 한다면, 변수에 저장해 두었다가 사용해도 된다.

 

 

실행 결과

 

 

 

참고 문서

https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#setting-environment-variables-dynamically