본문 바로가기
Jenkins

Jenkins - Downstream Job으로 파라미터 전달하기

by 홍띠 2023. 6. 18.

아래와 같이 1번 Job에서 생성된 Parameter를 1번 Job 다음에 실행되는 2번 Job에 전달하여 사용하고자 한다.

각 Job은 Pipeline으로 작성한다.


Job 1 pipeline 작성

먼저 Upstream Job의 파이프 라인 코드에서 Job2를 빌드(트리거)하도록 작성한다. 
이때 빌드명령의 옵션으로 parameter를 전달해주면 된다.

node {
    stage('post build') {
		build(job: 'job-2', parameters: [string(name: 'IMAGE_TAG', value: "0.1.${env.BUILD_ID}")], wait: false)    
    }
}

위의 코드는 'post-build' stage에서 'job-2'를 빌드를 실행시킨다.
여기서 parameters: [string(name: 'IMAGE_TAG', value: "0.1.${env.BUILD_ID}")] 옵션을 이용해서 'IMAGE_TAG'라는 변수명으로 "0.1.${env.BUILD_ID}" value 값을 'job-2'에 전달 할 수 있다.
즉, Job2에서는 IMAGE_TAG 라는 변수가 0.1.<Job1의 build Id(기본값은 build number로 부여된다.)>의 값으로 등록된다.
마지막 wait=false 옵션은 빌드를 실행시킨 job이 끝날때까지 기다리지 않겠다고 설정하는 것 이다.

Job 2 pipeline 작성

Job1 다음에 실행되는 Downstream Job에서는 앞의 Job의 build 명령에서 받은 파라미터 값을 등록해서 사용하면 된다.

파이프라인 코드 작성 전에 아래와 같이 환경변수를 등록해 주어야 정상적으로 값을 받아온다.
안그러면 해당 변수가 null 값이 된다…!!!!

이렇게 설정하면 해당 변수가 Job의 변수로 등록되고, default값을 설정 할 수 있다.

이후, pipeline에서 아래와 같이 사용하면 된다.

node {
    def imageTag = env.IMAGE_TAG
    stage('test') {
        echo "${env.IMAGE_TAG}"
    }
}

'Jenkins' 카테고리의 다른 글

Jenkins - AWS ECR에 이미지 Push  (0) 2023.08.20
Docker이용해서 Jenkins 설치  (0) 2023.06.07