Git 저장소 내 디렉토리를 Jenkins Job 매개 변수로 선택하고 싶습니다.

2152 단어 Jenkins

이게 뭐야



Git 리포지토리의 디렉토리를 Jenkins Job 매개 변수로 선택하려는 장면을 만났을 때의 메모입니다.
Jenkins1의 설정에 대해 설명합니다.



전제 조건



플러그인 확장 가능한 선택 Extensible Choice Parameter
가 설치되어 있어야 합니다.

Extensible Choice Parameter Plugin의 File Choice Parameter로 실현할 수 있을 것 같지만. .



Extensible Choice Parameter Plugin 에서 선택할 수 있는 File Choice Parameter 는, 시스템상의 파일이나 디렉토리를 선택사항으로서 설정할 수 있습니다.
그러나 이번 환경에서는 사용할 수 없었습니다.
이유는, 이용하고 있는 Jenkins 환경이 Job 관리 서버와 Job 프로덕션 서버로 나누어져 있어 Job를 실행하면 적절히 비어 있는 Job 프로덕션 서버에 할당되기 (위해)때문에, Job 관리 서버에 clone 한 리포지토리는 보관 유지할 수 없었습니다 .
이번에는 Groovy 스크립트로 생성하는 선택 System Groovy Script Choice Parameter를 이용합니다.

줄거리



두 개의 JenkinsJob을 만듭니다.
- Job1: Git 리포지토리를 취득해 디렉토리의 내용을 파일에 토출하는 작업.
- Job2: 궁극적으로 움직이고 싶은 작업. Job1이 내뿜는 파일을 읽고 파라미터에 풀다운 메뉴를 표시합니다.

Job1 설정



  • 소스 코드 관리에서 Git을 선택. 검색할 리포지토리를 설정합니다.

  • 빌드> 빌드 프로 시저 추가에서 workspace에서 ls 출력을 리디렉션하는 쉘 추가
  • # 選択肢として表示したいディレクトリのパスを指定します
    TARGET_PATH=${WORKSPACE}/target_directory
    
    # ディレクトリ名にCHOICEを含むものを出力します。
    echo 'ls -a ${TARGET_PATH} | grep ".*CHOICH.*"'
    ls -a ${TARGET_PATH} | grep ".*CHOICH.*" > target.log
    
    echo "cat target.log"
    cat target.log
    

  • 빌드 후 처리 > 빌드 후 처리 추가 에서 Copy files back to the job's workspace on the master node 를 선택하고 target.log 를 지정합니다.

  • 빌드 트리거에 정기적으로 실행 또는 SCM 폴링을 설정.

  • Job2 설정



  • 확장 가능한 선택> 선택 사항을 얻는 방법에서 Groovy 스크립트에서 생성 할 선택 사항을 지정합니다.
  • Groovy 스크립트에 다음을 설정. [PATH_TO_WORKSPACE] 부분은 Job1 실행시 콘솔 출력에 [copy-to-slave]로 출력되는 내용을 설정하십시오.
  • def files = new File("/[PATH_TO_WORKSPACE]/target.log").readLines()
    return files
    

    이상으로 Job2의 파라미터에 옵션으로서 설정할 수 있을 것.

    좋은 웹페이지 즐겨찾기