[JENKINS] 외부 파라미터 주입 받기(InputSubmit)
[JENKINS] 외부 파라미터 주입 받기(InputSubmit)
필요 플러그인
- Pipeline: REST API Plugin
- 파이프라인의 실행 상태, 실행 이력 등을 REST API로 제공하는 플러그인
- 이 플러그인은 Jenkins 파이프라인의 상태를 조회하거나 외부 시스템에서 트리거 할 때 사용됨
InputSubmit에 대한 기능
- Jenkins의
inputSubmit
기능은 파이프라인 중간에 사용자로부터 입력을 받아야 할 때 사용하는input
스텝을 REST API로 처리하는 방식이다. - Jenkins는 REST API를 통해 파이프라인이 대기 중인 입력 요청을 승인하거나 중단 할 수 있다.
REST API 를 통항 INPUT 대기 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
pipeline {
agent any
stages {
stage("APPROVAL WAITNG"){
steps{
script{
try{
timeout(time: 60, unit: 'MINUTES'){ // 입력을 60분 동안 대기
def APPROVE_RESULT = input message: "DEPLOY APPROVAL ANSWER",
ok: 'APPROVAL', // 승인을 OK할 버튼의 메시지
id: 'Deployvalue',
submitterParameter: 'approval', // 입력을 승인한 사용자의 이름을 `approval`라는 파라미터에 저장
parameters: [choice(name: 'APPROVERESULT', choices: 'yes\nno', description: 'APPROVAL?')]
echo "RESPONSE : ${APPROVE_RESULT}"
}
}catch(error){
print(error)
env.APPROVAL = false
currentBuild.result = "FAILURE"
}
} // script
} // steps
} // stage
stage('Deploy to Production') {
steps {
echo "Deploying to production..."
} // steps
} // stage
} // stages
} // pipeline
입력 대기중인 대상 조회
curl로 대기 상태 조회
1
$ curl -u ${USER_NAME}:${API_TOKEN} https://jenkins.example.com/job/${YOUR_JOB_NAME}/${BUILD_NUMBER}/wfapi/pendingInputActions
- USER_NAEM : Jenkins 사용자 이름
- API_TOKEN : Jenkins 사용자 API 토큰
- YOUR_JOB_NAME : Jenkins Job 이름
- BUILD_NUMBER : 실행 중인 빌드 번호
조회 결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[
{
"id": "Deployvalue",
"proceedText": "APPROVAL",
"message": "DEPLOY APPROVAL ANSWER",
"inputs": [{
"type": "ChoiceParameterDefinition",
"name": "APPROVERESULT",
"description": "APPROVAL?",
"definition": {
"defaultVal": "yes",
"choices": [
"yes",
"no"
]
}
}],
"proceedUrl": "/job/YOUR_JOB_NAME/BUILD_NUMBER/wfapi/inputSubmit?inputId=Deployvalue",
"abortUrl": "/job/YOUR_JOB_NAME/BUILD_NUMBER/input/Deployvalue/abort",
"redirectApprovalUrl": "/job/YOUR_JOB_NAME/BUILD_NUMBER/input/"
}
]
This post is licensed under CC BY 4.0 by the author.