
Published 2023. 5. 29. 13:54
1. 개요
만들어볼 프로세스는 아래와 같습니다.
- 젠킨스 파이프라인 실행
- 레드마인 티켓 선택 (multi select)
- 선택한 티켓 제목 및 설명 출력
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 구문으로 확인

'인프라 > Jenkins' 카테고리의 다른 글
Jenkins Email 보내기 (with 파일 첨부, 이메일 템플릿) (0) | 2023.05.29 |
---|---|
Jenkins 배포 승인 프로세스 구성 3 - Jenkins 파이프라인 (0) | 2023.05.28 |
Jenkins 배포 승인 프로세스 구성 2 - API (Python Flask) (0) | 2023.05.28 |
Jenkins 배포 승인 프로세스 구성 1 - 개요 (0) | 2023.05.21 |
[Jenkins] install offline (0) | 2022.04.07 |