CICD/Jenkins

Jenkins - 환경변수 사용

Jayyy.H 2021. 2. 24. 00:59

Jenkins 환경변수

Jenkins Global variable

  1. env
    : env 환경변수는 다음과 같은 형식 env.VARNAME으로 참조될 수 있다. 대표적인 env의 property는 아래와 같다.
property 이름 설명
BUILD_ID 현재 빌드의 ID이며 이는 v1.597 이상에서는 BUILD_NUMBER와 같은 값을 가진다
JOB_NAME 현재 빌드중인 프로젝트의 이름으로 foo 또는 foo/bar와 같은 형식이다.
BRANCH_NAME multibranch 프로젝트인 경우 사용할 수 있으며, 현재 빌드되고 있는 브랜치명을 알려준다
CHANGE_ID multibranch 프로젝트의 change request에 대한 change ID(PR number)를 나타낸다.
CHANGE_URL multibranch 프로젝트의 change request에 대한 change URL을 나타낸다.
CHANGE_TARGET multibranch 프로젝트의 change request에 대해 merge될 base branch를 나타낸다.
CHANGE_BRANCH multibranch 프로젝트의 change request에 대해 현재 HEAD가 가리키고 있는 브랜치 명을 알려준다. 이는 BRANCH_NAME과 같을 수 있다.
BUILD_NUMBER 현재 build number를 나타낸다.
JENKINS_URL http://server:port/jenkins/와 같은 jenkins의 URL을 알려준다.
BUILD_URL http://server:port/jenkins/job/foo/15/와 같은 현재 build의 URL을 알려준다.
JOB_URL http://server:port/jenkins/job/foo/와 같은 job의 URL을 알려준다
  1. currentBuild
    : currentBuild 환경변수는 현재 빌드되고 있는 정보를 담고있다. 보통 readonly 옵션인데 일부 writable한 옵션이 존재한다. 대표적인 currentBuild의 property는 아래와 같다.
property 이름 설명
number build number를 나타낸다.
result SUCCESS, UNSTABLE, FAILURE를 가질 수 있으며, 빌드 중에는 null이 될 수 있다. writable한 옵션이다.
currentResult SUCCESS, UNSTABLE, FAILURE를 가질 수 있으며 null이 될 수 없다.
duration 빌드에 소요되고 있는 시간을 ms단위로 나타낸다.
keepLog true이면 해당 빌드에 대한 로그 파일은 지워지지 않는다. writable한 옵션이다.
displayName 보통 #123과 같으나 writable한 옵션이다.
  1. docker
    : TBD

환경변수의 사용

이들의 사용 예는 아래와 같다.

pipeline {
    agent any
    stages {
        stage('Example') {
            steps {
                echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}"
            }
        }
    }
}

: Jenkins에서 환경변수를 설정할 수 있으며 이 예는 아래와 같다.

pipeline {
    agent any
    environment { 
        CC = 'clang'
    }
    stages {
        stage('Example') {
            environment { 
                DEBUG_FLAGS = '-g'
            }
            steps {
                sh 'printenv'
            }
        }
    }
}
  • environment 지시어가 pipeline의 최 상단에 위치해 있으면, 이는 모든 step에 적용된다. 각 stage에 위치한 환경변수는 해당 stage에서만 적용된다.

pipeline-syntax/globals