젠킨스 작업 리스트 보여주기
-
신규 작업 생성
-
빌드 파라미터에 아래 스크립트 추가
Extensible Choice > Choice Provider: "System Groovy Choice Parameter" > Goovy Scriptimport 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 }
-
<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
젠킨스 작업 및 빌드번호 보여주기
-
신규 작업 생성
-
빌드 파라미터에 작업 이름 리스트 설정 추가 (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]
-
-
빌드 파라미터에 작업 번호 리스트 추가 (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
-
-
빌드 파라미터에 키워드 추가 (Multi-line String Parameter)
-
Name: keyword
-
-
빌드 스크립트 추가 (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
-