개요
2023.10.30 - [Jenkins] 파이프라인 생성
2023.10.31 - [Jenkins] Pipeline 구성 요소
2023.11.01 - [Jenkins] Pipeline - agent Section
위 글을 통해 Jenkins 파이프라인에 대해 조금씩 공부해보고 있는데, 이번 글에서는 변수를 선언하고 사용하는 방법에 대해 정리한다. Declarative Pipeline에 대해서만 작성한다.
pipeline 블록 밖에서 정의
Declarative Pipeline을 사용할 때, pipeline 블록 밖에서 변수를 정의한 뒤, pipeline 안에서 변수를 참조할 수 있다.
변수 선언
변수를 선언할 때는 def 키워드를 사용하거나 생략할 수 있으며, 변수의 데이터 타입을 지정할 수 있다.
(유효한지는 잘 모르겠다……😅.)
def TEST_VAL_1 = "test_val_1"
String TEST_VAL_2 = 'test_val_2'
TEST_VAL_3 = """
test_val_3
test_val_3
"""
만약 변수의 값이 개행을 포함한 문자열이라면 따옴표 세 개로 값을 감싸서 사용하면 된다.
변수 사용
선언한 변수를 사용할 때는 변수임을 알리는 $을 이용한다. 보다 명시적으로 변수명을 ${}로 감싸서 사용할 수도 있다.
echo "$TEST_VAL_1"
echo '$TEST_VAL_2'
echo "${TEST_VAL_3}"
예시 )
def TEST_VAL_1 = "test_val_1"
String TEST_VAL_2 = 'test_val_2'
TEST_VAL_3 = """
test_val_3
test_val_3
"""
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo "$TEST_VAL_1"
echo "$TEST_VAL_2, ${TEST_VAL_3}"
}
}
}
}
environment Directive
environment 지시문은 파이프라인 내 모든 stage 또는 특정 stage에서 환경변수로 정의할 key-value 쌍의 값을 지정한다. pipeline 블록 내에 또는 stage 섹션 내에 정의될 수 있다.
환경변수 선언
환경변수는 environment블록 내에서 정의할 수 있다. environment 지시문은 pipeline 블럭 최상위 또는 stage에서 정의될 수 있다.
environment {
TEST_VAL_1 = "test_val_1"
}
환경변수 사용
환경변수도 변수임을 나타내는 $를 사용한다. 또한 환경변수임을 나타내는 env.<변수명> 형식으로 사용할 변수를 지정할 수 있다.
echo "$TEST_VAL_1"
echo "${env.TEST_VAL_3}"
예시 )
아래 예시는 pipeline 최상위 수준에서 정의한 전역 환경변수와 stage에서 정의한 환경변수를 사용한 것이다.
pipeline {
agent any
environment {
TEST_VAL_1 = "test_val_1"
}
stages {
stage('Hello') {
environment {
TEST_VAL_3 = """
test_val_3
test_val_3
"""
}
steps {
echo "$TEST_VAL_1"
echo "${env.TEST_VAL_3}"
}
}
stage('Hello_2') {
steps {
echo "$TEST_VAL_1"
echo "${env.TEST_VAL_3}"
}
}
}
}
Hello_2 stage에서 정의되지 않은 환경변수 TEST_VAL_3은 null로 출력되는 모습을 확인할 수 있다.
script 블록 내에서 정의
script은 Declarative Pipeline에서 Scripted Pipeline 방식으로 작성한 블록을 정의한다. script 블록은 steps 내부에 정의되어야 한다.
변수 선언
steps {
script {
TEST_VAL_1 = "test_val_1"
TEST_VAL_3 = """
test_val_3
test_val_3
"""
}
}
변수 사용
echo "$TEST_VAL_1"
echo "${TEST_VAL_3}"
예시 )
pipeline {
agent any
stages {
stage('Hello') {
steps {
script {
TEST_VAL_1 = "test_val_1"
TEST_VAL_3 = """
test_val_3
test_val_3
"""
}
echo "$TEST_VAL_1"
echo "${TEST_VAL_3}"
}
}
}
}
참고 문서
https://www.shellhacks.com/jenkins-pipeline-define-variable-jenkins-variables/
How to define variable in Jenkins declarative pipeline?