Jenkins 다운 스트림 작업에서 업스트림 작업 매개 변수를 얻는 방법

3825 단어 Jenkins
Docker Image를 빌드하는 업스트림 작업의 종료를 트리거로,
갓 만든 호와 호야의 이미지를 사용하여 테스트 할 작업을 만들려고했고 하류 작업에서 상류 작업의 빌드 매개 변수를 얻는 방법을 조사했기 때문에 Kakiko

준비


  • Jenkins 관리 -> In-process Script Approval을 클릭합니다
  • 아래와 같이 "method hudson.model.Run getEnvironment"와 "method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild"를 승인란에 추가


  • 스크립트



    다음 행을 작업에 통합하면 환경 변수를 통해 업스트림 작업 매개 변수를 얻을 수 있습니다.
    stage('Get Upstream Parameter') {
        steps {
            script {
                upstreamBuilds = currentBuild.upstreamBuilds
                if (upstreamBuilds.isEmpty()) {
                    // Job is run by manually -> Do nothing.
                } else {
                    // Job is run by trigger of upstream success.
                    def upstream = upstreamBuilds[0].rawBuild
                    def upstreamEnv = upstream.environment
                    echo upstreamEnv["container_name"]
                    echo upstreamEnv["branch_name"]
                }
             }
         }
    }
    

    방법 2: 업스트림 작업에서 매개변수가 있는 다운스트림 작업 실행



    이쪽은 간단하고, 이하와 같이 쓰는 것만으로 OK.
    build job: 'DownstreamJob', parameters: [
        [$class: 'StringParameterValue', name: 'container_name', value: "${params.container_name}"]
    ]
    

    다만, 상류측에 호출 처리를 실장하면,
    이번 Docker image build와 같이 불특정 다수의 테스트 작업의 상류가 되는 경우,
    테스트 작업이 늘어날 때마다 업스트림 스크립트가 업데이트되기 때문에,
    「상류에서 하류로 파라미터 첨부로 작업을 실행한다」인가 「하류로부터 상류의 파라미터를 취하러 간다」인가는, 만들려고 하는 테스트로부터 생각하는 것이 좋을 것 같다

    참고 자료



    Jenkins의 사양을 다룬 자료는 적지 않지만 생각했지만, 찾아 보면 의외로 나오네요 (단지 공부 부족이었다 ..)
  • Global variable reference
  • JavaDoc (hudson.model.Run)
  • 좋은 웹페이지 즐겨찾기