[continuous-integration] Jenkins-작업간에 변수 전달?

젠킨스에 두 개의 직업이 있는데 둘 다 동일한 매개 변수가 필요합니다.

두 번째 작업을 트리거 할 때 동일한 매개 변수가 사용되도록 매개 변수로 첫 번째 작업을 실행하려면 어떻게해야합니까?



답변

한 작업에서 다른 작업으로 매개 변수를 전달할 수있는 매개 변수화 된 트리거 플러그인 을 사용할 수 있습니다 .

업스트림에서 전달한이 매개 변수도 다운 스트림에 추가해야합니다.


답변

1. 빌드 후 작업> “다른 프로젝트에서 매개 변수화 된 빌드 트리거”를 선택합니다.

2. 값이있는 환경 변수를 입력합니다. 값은 Jenkins 빌드 매개 변수 일 수도 있습니다 .Value can also be Jenkins Build Parameters.

자세한 단계는 여기에서 볼 수 있습니다.

https://itisatechiesworld.wordpress.com/jenkins-related-articles/jenkins-configuration/jenkins-passing-a-parameter-from-one-job-to-another/

도움이 되었기를 바랍니다. 🙂


답변

허용 대답은 여기 내 사용 사례 작동하지 않습니다. 한 작업에서 동적으로 매개 변수를 생성하고 다른 작업에 전달할 수 있어야했습니다. Mark McKenna가 언급 했듯이 셸 빌드 단계에서 빌드 후 작업으로 변수를 내보낼 수있는 방법이없는 것 같습니다.

Parameterized Trigger Plugin 을 사용하여 값을 파일에 쓰고 해당 파일을 매개 변수로 사용하여 ‘Add post-build action’-> ‘Trigger parameterized build …’를 통해 가져온 다음 ‘Add Parameters’를 선택 하여 해결 방법을 얻었 습니다. > ‘속성 파일의 매개 변수’.


답변

위의 답변에는 몇 가지 업데이트가 필요하다고 생각합니다.

업스트림 빌드 아티팩트를 저장할 동적 디렉터리를 만들려고했기 때문에 업스트림 작업 빌드 번호를 다운 스트림 작업에 전달하고 싶었습니다. 위의 단계를 시도했지만 작동하지 못했습니다. 작동 방식은 다음과 같습니다.

  1. 아티팩트 복사 플러그인을 사용하여 현재 작업에서 아티팩트를 복사했습니다.
  2. 업스트림 작업의 빌드 후 작업에서 “SOURCE_BUILD_NUMBER = $ {BUILD_NUMBER}”와 같은 변수를 추가하고 다운 스트림 작업을 트리거하도록 구성했습니다.
  3. 내 다운 스트림 작업이 $ SOURCE_BUILD_NUMBER를 가져와 디렉터리를 만들 수 없다는 점을 제외하고는 모든 것이 작동했습니다.
  4. 그래서이 변수를 사용하려면 아래 그림과 같이 다운 스트림 작업에서 동일한 변수를 매개 변수 변수로 정의해야한다는 것을 알았습니다.

여기에 이미지 설명 입력

새로운 버전의 jenkins에서는 다운 스트림 작업에서도 변수를 정의해야하기 때문입니다. 도움이 되었기를 바랍니다.


답변

(동료 Google 직원 용)

Build Flow Plugin 으로 심각한 파이프 라인을 구축하는 경우 다음 과 같이 DSL을 사용하여 작업간에 매개 변수를 전달할 수 있습니다.

다른 작업에 전달하기 위해 사용 가능한 문자열 매개 변수 “CVS_TAG”를 가정합니다.

build("pipeline_begin", CVS_TAG: params['CVS_TAG'])
parallel (
   // will be scheduled in parallel.
   { build("pipeline_static_analysis", CVS_TAG: params['CVS_TAG']) },
   { build("pipeline_nonreg", CVS_TAG: params['CVS_TAG']) }
)
// will be triggered after previous jobs complete
build("pipeline_end", CVS_TAG: params['CVS_TAG'])

사용 가능한 변수 / 매개 변수를 표시하기위한 힌트 :

// output values
out.println '------------------------------------'
out.println 'Triggered Parameters Map:'
out.println params
out.println '------------------------------------'
out.println 'Build Object Properties:'
build.properties.each { out.println "$it.key -> $it.value" }
out.println '------------------------------------'


답변

아직 댓글을 달 수 없으므로 Nigel Kirby 외에도 내 답변을 추가하십시오.

동적으로 생성 된 매개 변수를 전달하려면 ‘Execute Shell’타일에서 변수를 내 보낸 다음 ‘Trigger parameterized build on other projects’=> ‘Predefined parameters “=> give’YOUR_VAR = $ YOUR_VAR ‘을 통해 전달할 수도 있습니다. 우리 팀은이 기능을 사용하여 빌드 작업에서 배포 작업으로 npm 패키지 버전을 전달합니다.

업데이트 : 위는 Jenkins 주입 매개 변수에서만 작동하며, 쉘에서 생성 된 매개 변수는 여전히 동일한 방법을 사용해야합니다. 예. echo YOUR_VAR = $ {YOUR_VAR}> variable.properties 및 해당 파일을 다운 스트림으로 전달


답변

다운 스트림 Rundeck 작업에 pom 버전을 전달해야 할 때 동일한 문제에 직면했습니다.

내가 한 일은 다음과 같은 속성 파일을 통해 매개 변수 주입을 사용하는 것입니다.

1) 쉘을 통해 속성 파일에 속성 생성 :

빌드 작업 :

  • 셸 스크립트 실행
  • 환경 변수 삽입

예 : 속성 정의

2) 정의 된 속성을 다운 스트림 작업에 전달 : 빌드 후 작업 :

  • 다른 프로젝트에서 매개 변수화 된 빌드 트리거
  • 매개 변수 추가 : 현재 빌드 매개 변수
  • 매개 변수 추가 : 사전 정의 된 매개 변수

예 : 속성 보내기

3) 그런 다음 다운 스트림 Rundeck 작업에서 $ POM_VERSION을 사용할 수있었습니다.

/! \ Jenkins 버전 : 1.636

/! \ 트리거 된 빌드를 만들 때 어떤 이유로 속성을 전달하기 위해 ‘현재 빌드 매개 변수’옵션을 추가해야했습니다.