1. 개요

만들어볼 프로세스는 아래와 같습니다.

  1. 젠킨스 파이프라인 실행
  2. 레드마인 티켓 선택 (multi select)
  3. 선택한 티켓 제목 및 설명 출력

 

2. 파이프라인

  • curl -X GET API 호출 부분에서 한글로 된 부분을 사용하시는 레드마인 정보에 맞게 입력하셔야 합니다.
  • API를 호출하여 응답받은 json은 JsonSlurper 플러그인을 통해 파싱합니다.
  • input ExtendedChoice 구문을 이용해 레드마인 티켓을 다중 선택 할 수 있도록 합니다.
import groovy.json.JsonSlurper

pipeline {
    agent any
    
    environment {
        issues = ""
    }
    
    stages {
        stage('GET Redmine REST API') {
            steps {
                script {
                    def jsonString = sh(encoding: 'UTF-8', returnStdout: true, script: 'curl -X GET \'https://레드마인주소/issues.json?project_id=프로젝트명&status_id=1&key=레드마인 API KEY\'')
                    def jsonSlurper = new JsonSlurper()
                    def object = jsonSlurper.parseText(jsonString)
                    def tmp = ""
                    for(int i = 0; i < object.issues.size(); i++) {
                        if(i != object.issues.size() - 1) {
                            tmp += object.issues[i].id.toString() + ','
                        } else {
                            tmp += object.issues[i].id.toString()
                        }
                    }
                    issues = tmp
                }
            }
        }
        stage('Choice') {
            steps {
                script {
                    def choices = input message: 'choice tickets',
                                        parameters: [
                                            extendedChoice(
                                                name: 'tickets',
                                                description: '',
                                                multiSelectDelimiter: ',',
                                                type: 'PT_MULTI_SELECT',
                                                value: "${issues}"
                                            )         
                                        ]
                    def choices_split = choices.split(',')
                    for(int i = 0; i < choices_split.size(); i++) {
                        def jsonString = sh(encoding: 'UTF-8', returnStdout: true, script: 'curl -X GET \'https://레드마인주소/issues.json?project_id=프로젝트명&status_id=1&key=레드마인 API KEY' + '&issue_id=' + choices_split[i] + '\'')
                        def jsonSlurper = new JsonSlurper()
                        def object = jsonSlurper.parseText(jsonString)
                        def result = "ticket : " + choices_split[i] + "\n" + "subject : " + object.issues[0].subject + "\n" + "description : " + object.issues[0].description
                        echo result
                    }
                }
            }
        }
    }
}

 

3. 결과화면

  • 파이프라인 빌드

  • 티켓 선택

  • console 에서 echo 구문으로 확인

복사했습니다!