Jenkins에서 작업 간 매개 변수 전달이 전혀 잘되지 않았기 때문에 메모
3557 단어 ShellScriptJenkins
소개
처음으로 Jenkins에서 테스트 용의 간단한 job을 작성했지만, 좀처럼 잘하지 못했기 때문에 비망록.
하고 싶었던 일
표제대로 Job1에서 Job2로 매개변수를 전달하고 싶었습니다.
성공 절차
①플러그인 설치
표제대로 Job1에서 Job2로 매개변수를 전달하고 싶었습니다.
성공 절차
①플러그인 설치
②환경변수의 인젝트 설정
JOB_PARAM
를 파일에 씁니다 ※ 파일이 생성되지 않는 처리 루트(생성 전에 exit 등)가 존재하면 후속 Job에서 에러가 발생하기 때문에 주의
Job1.sh
JOB_PARAM="aaa";
PROPERTY_FILE="example.properties";
echo "JOB_PARAM=${JOB_PARAM}" > ${PROPERTY_FILE};
example.properties
라고 기입 ③ 빌드 후 처리 설정
TARGET_PARAMETER=${JOB_PARAM}
와 같이 설정 ④ 파라미터의 수령
TARGET_PARAMETER
는 다음과 같이 사용할 수 있습니다 Job2.sh
echo "Job1で設定したAの値:${TARGET_PARAMETER}";
⑤실행 결과
Job1で設定したAの値:aaa
흠집
환경 변수의 주입
이것을 깨닫지 못했습니다.
단순히 빌드 후처리에 [Predefined parameters] 를 추가해 파라미터를 건네주는 것만으로는 능숙하지 않고,
쉘 스크립트에서 정의한 변수가 빌드 후 처리로 전달되지 않았습니다.
즉 TARGET_PARAMETER=${JOB_PARAM}
와 [Predefined parameters]로 설정하면
Job2에는 "${JOB_PARAM}"이라는 문자열이 전달됩니다.
빌드 처리 중에 인젝트용의 파일을 작성해, 건네주고 싶은 변수의 값을 파일내에
작성하는 작업이 필요했습니다.
[환경 변수 주입]을 사용하면 위의 파일을 검색할 수 있습니다.
실제로 빌드 후 처리 ⇒ [Trigger parameterized build on other projects] ⇒
[Add Parameters] ⇒ [Parameters from properties file]에서 스크립트 내에서 쓴 파일을 직접 지정하면
환경 변수의 인젝트를 설정하지 않아도 할 수 있었지만,
개인적으로는 본 목적의 알기 쉬움의 차이일까라고 생각하고 있습니다.
(인젝트하고 싶은 파일을 지정하는 것이, 빌드 후의 처리의 기술로 건네주고 싶은 변수가 명확하고 스마트)
참고
Reference
이 문제에 관하여(Jenkins에서 작업 간 매개 변수 전달이 전혀 잘되지 않았기 때문에 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/stranger_broccoli/items/cd5c13a0ad578057d3de텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)