Jenkins에서 작업 간 매개 변수 전달이 전혀 잘되지 않았기 때문에 메모

3557 단어 ShellScriptJenkins

소개



처음으로 Jenkins에서 테스트 용의 간단한 job을 작성했지만, 좀처럼 잘하지 못했기 때문에 비망록.

하고 싶었던 일



표제대로 Job1에서 Job2로 매개변수를 전달하고 싶었습니다.
    

성공 절차



①플러그인 설치


  • Jenkins Parameterized Trigger plugin 플러그인을 사용 가능 상태로 설정

  • ②환경변수의 인젝트 설정


  • Job1의 쉘 스크립트에서 다음과 같이 속성 파일을 만들고 전달하려는 변수 JOB_PARAM를 파일에 씁니다

  • ※ 파일이 생성되지 않는 처리 루트(생성 전에 exit 등)가 존재하면 후속 Job에서 에러가 발생하기 때문에 주의

    Job1.sh
    JOB_PARAM="aaa";
    
    PROPERTY_FILE="example.properties";
    echo "JOB_PARAM=${JOB_PARAM}" > ${PROPERTY_FILE};
    
  • Job1의 빌드 탭에서 [빌드 절차 추가] ⇒ [환경 변수 주입] 선택
  • [속성 파일 경로] 에 example.properties 라고 기입

  • ③ 빌드 후 처리 설정


  • Job1의 빌드 후 처리 탭에서 [빌드 후 처리 추가] ⇒ [Trigger parameterized build on other projects]를 선택

  • [Projects to build]에 전달할 작업 이름 (여기서는 "Job2")을 기입
  • [Trigger when build is]에서 [Stable] 선택
  • [Add Parameters] ⇒ [Predefined parameters]를 선택하고 전달하려는 매개 변수를 TARGET_PARAMETER=${JOB_PARAM}와 같이 설정

  • ④ 파라미터의 수령


  • Job2의 General 탭에서 [빌드 매개 변수화]를 선택하고 [매개 변수 추가] ⇒ [텍스트] 선택
  • [이름]에 Job1의 [Predefined parameters]에 지정한 변수 이름 (여기서는 "TARGET_PARAMETER")을 기입
  • Job2 쉘 스크립트에서 Job1에 정의 된 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]에서 스크립트 내에서 쓴 파일을 직접 지정하면
    환경 변수의 인젝트를 설정하지 않아도 할 수 있었지만,
    개인적으로는 본 목적의 알기 쉬움의 차이일까라고 생각하고 있습니다.
    (인젝트하고 싶은 파일을 지정하는 것이, 빌드 후의 처리의 기술로 건네주고 싶은 변수가 명확하고 스마트)

    참고


  • Jenkins 인 작업이 완료된 후 다른 작업에 매개 변수를 전달하고 실행
  • jenkins 스크립트간에 변수를 공유하고 싶습니다.
  • 좋은 웹페이지 즐겨찾기