젠킨스 작업 리스트 보여주기

  1. 신규 작업 생성

  2. 빌드 파라미터에 아래 스크립트 추가

    Extensible Choice > Choice Provider: "System Groovy Choice Parameter" > Goovy Script
    import jenkins.model.Jenkins
    import hudson.model.Job
    
    return Jenkins.instance.getAllItems(Job.class).collect { URLDecoder.decode(it.name) }

    혹은 jenkins rest api 사용 가능

    import groovy.json.JsonSlurper
    
    def http = new URL("http://<JENKINS_URL>/api/json").openConnection() as HttpURLConnection
    http.setDoOutput(true)
    http.setRequestProperty("Accept", 'application/json')
    http.setRequestProperty("Content-Type", 'application/json')
    http.connect()
    
    def response = [:]
    
    if (http.responseCode == 200) {
      response = new JsonSlurper().parseText(http.inputStream.getText('UTF-8'))
    } else {
      response = new JsonSlurper().parseText(http.errorStream.getText('UTF-8'))
    }
    
    return response.jobs.collect { it.name }
  3. <JENKINS_URL>/scriptApproval 에서 아래 시그니쳐 approve 설정

    Signatures already approved:
    method hudson.model.Item getName
    method hudson.model.ItemGroup getAllItems java.lang.Class
    staticMethod java.net.URLDecoder decode java.lang.String
    staticMethod jenkins.model.Jenkins getInstance

젠킨스 작업 및 빌드번호 보여주기

  1. 신규 작업 생성

  2. 빌드 파라미터에 작업 이름 리스트 설정 추가 (Active Choices Reactive Parameter)

    • Name: target_job

    • Script > Groovy Script > Script > Groovy Script

      import jenkins.model.Jenkins
      import hudson.model.Job
      
      return Jenkins.instance.getAllItems(Job.class).collect { URLDecoder.decode(it.name) }
    • Choice Type: Single Select

    • Enable filters: [v]

  3. 빌드 파라미터에 작업 번호 리스트 추가 (Active Choices Reactive Parameter)

    • Name: target_job

    • Script > Groovy Script > Script > Groovy Script

      import jenkins.model.Jenkins
      
      return Jenkins.instance.getItemByFullName(target_job).getBuildsAsMap().keySet().collect { it }
    • Script > Groovy Script > Fallback Script > Groovy Script

      return ['none']
    • Choice Type: Single Select

    • Referenced parameters: target_job

  4. 빌드 파라미터에 키워드 추가 (Multi-line String Parameter)

    • Name: keyword

  5. 빌드 스크립트 추가 (Build > Execute shell)

    Note

    여기서는 특정 빌드 작업의 로그를 다운받아 키워드로 검색하는 작업을 예시로 만들었다.

    • Command

      export LANG=C.UTF-8
      
      log_file=${target_job}_${target_number}
      output="${target_job}_${target_number}-result_created_${BUILD_ID}_at_$(date +%Y%m%d%H%M%S)"
      
      # download log
      curl ${JENKINS_URL}job/${target_job}/${target_number}/consoleText -o ${log_file}
      
      # convert keyword to array
      arr=()
      while read -r line; do
         arr+=("$line")
      done <<< "$keyword"
      
      # search
      for key in "${arr[@]}"; do
      	cat ${log_file} | grep "$key" >> ${output}
      done