Jenkins-작업간에 변수 전달?
젠킨스에 두 개의 직업이 있는데 둘 다 동일한 매개 변수가 필요합니다.
두 번째 작업을 트리거 할 때 동일한 매개 변수가 사용되도록 매개 변수로 첫 번째 작업을 실행하려면 어떻게해야합니까?
한 작업에서 다른 작업으로 매개 변수를 전달할 수있는 매개 변수화 된 트리거 플러그인 을 사용할 수 있습니다 .
업스트림에서 전달한이 매개 변수도 다운 스트림에 추가해야합니다.
1. 빌드 후 작업> "다른 프로젝트에서 매개 변수화 된 빌드 트리거"를 선택합니다.
2. 값이있는 환경 변수를 입력합니다. 값은 Jenkins 빌드 매개 변수 일 수도 있습니다 .Value can also be Jenkins Build Parameters.
자세한 단계는 여기에서 볼 수 있습니다.
도움이 되었기를 바랍니다. :)
허용 대답은 여기 내 사용 사례 작동하지 않습니다. 한 작업에서 동적으로 매개 변수를 생성하고 다른 작업에 전달할 수 있어야했습니다. Mark McKenna가 언급 했듯이 셸 빌드 단계에서 빌드 후 작업으로 변수를 내보낼 수있는 방법이없는 것 같습니다.
Parameterized Trigger Plugin 을 사용하여 값을 파일에 쓰고 해당 파일을 매개 변수로 사용하여 'Add post-build action'-> 'Trigger parameterized build ...'를 통해 가져온 다음 'Add Parameters'를 선택 하여 해결 방법을 얻었 습니다. > '속성 파일의 매개 변수'.
위의 답변에는 몇 가지 업데이트가 필요하다고 생각합니다.
업스트림 빌드 아티팩트를 저장할 동적 디렉터리를 만들려고했기 때문에 업스트림 작업 빌드 번호를 다운 스트림 작업에 전달하고 싶었습니다. 위의 단계를 시도했지만 작동하지 못했습니다. 작동 방식은 다음과 같습니다.
- 아티팩트 복사 플러그인을 사용하여 현재 작업에서 아티팩트를 복사했습니다.
- 업스트림 작업의 빌드 후 작업에서 "SOURCE_BUILD_NUMBER = $ {BUILD_NUMBER}"와 같은 변수를 추가하고 다운 스트림 작업을 트리거하도록 구성했습니다.
- 내 다운 스트림 작업이 $ SOURCE_BUILD_NUMBER를 가져와 디렉터리를 만들 수 없다는 점을 제외하고는 모든 것이 작동했습니다.
- 그래서이 변수를 사용하려면 아래 그림과 같이 다운 스트림 작업에서 동일한 변수를 매개 변수 변수로 정의해야한다는 것을 알았습니다.
새로운 버전의 젠킨스에서는 다운 스트림 작업에서도 변수를 정의해야하기 때문입니다. 도움이 되었기를 바랍니다.
(동료 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 Version : 1.636
/!\ For some reason when creating the triggered build, it was necessary to add the option 'Current build parameters' to pass the properties.
Reading through the answers, I don't see another option that I like so will offer it as well. I love the parameterization of jobs, but it doesn't always scale well. If you have jobs which are not directly downstream of the first job but farther down the pipeline, you don't really want to parameterize every job in the pipeline so as to be able to pass the parameters all the way through. Or if you have a large number of parameters used by a variety of other jobs (especially those not necessarily tied to one parent or master job), again parameterization doesn't work.
이 경우 값을 속성 파일에 출력 한 다음 EnvInject 플러그인을 사용하여 필요한 작업에 주입하는 것을 선호 합니다. 이것은 동적으로 수행 될 수 있으며, 이는 매개 변수화 된 작업이 여전히 사용 된 위의 다른 답변에서 문제를 해결하는 또 다른 방법입니다. 이 솔루션은 많은 시나리오에서 매우 잘 확장됩니다.
Hudson Groovy 빌더 를 사용 하여이를 수행 할 수 있습니다 .
파이프 라인의 첫 번째 작업
파이프 라인의 두 번째 작업
참고 URL : https://stackoverflow.com/questions/9704677/jenkins-passing-variables-between-jobs
'code' 카테고리의 다른 글
strstr 또는 strpos가 선호되는 방법은 무엇입니까? (0) | 2020.10.14 |
---|---|
CodeIgniter의 액티브 레코드로 NOW ()를 데이터베이스에 삽입 (0) | 2020.10.14 |
파일, 어셈블리 또는 종속성 중 하나를로드 할 수 없습니다. (0) | 2020.10.14 |
Java 임시 파일은 언제 삭제됩니까? (0) | 2020.10.14 |
application.yml은 환경 변수를 지원합니까? (0) | 2020.10.14 |