[Jenkins] pipeline interactive input (choice parameter)
14324 ワード
Jenkins input stepを使用してPipelineを構成し、構築中にユーザー入力を受信します.
Pipeline input step : https://www.jenkins.io/doc/pipeline/steps/pipeline-input-step/
配管全体を見ると、以下のようになります.
Jenkins API Tokenを設定すると、以下のコマンドでinput stepに答えることもできます.
私が書いたpipeline scriptを見ると、inputには
Pipeline input step : https://www.jenkins.io/doc/pipeline/steps/pipeline-input-step/
input(
id: 'wait-approval',
message: 'Approve?',
submitterParameter: 'approver',
parameters: [
choice(
choices: ['Cancel', 'Deploy'],
description: 'Are you sure?',
name: 'choice'
)
]
)
Input stepを上記の手順に記述すると、Job buildを行うと、構築中に次のような入力ウィンドウが表示されます.配管全体を見ると、以下のようになります.
pipeline {
agent any
stages {
stage('Approval') {
steps {
script {
try {
def approval = input(
id: 'wait-approval'
message: 'Approve?',
submitterParameter: 'approver',
parameters: [choice(choices: ['Cancel', 'Deploy'],description: 'Are you sure?',name: 'choice')]
)
if (approval['approver'] != "${administrator}") {
throw new Exception('You do not have permission.')
}
if (approval['choice'] == 'Deploy') {
print('choice deploy')
currentBuild.result = 'Success'
} else {
throw new Exception('Choosed cancel')
}
} catch(Exception e) {
error e
currentBuild.result = 'Fail'
}
}
}
}
}
}
Deploy
を選択し、Proceed
ボタンを押してこそ、次のステップに進むことができます.Abort
またはCancel
を押すと、パイプは終了します.Jenkins API Tokenを設定すると、以下のコマンドでinput stepに答えることもできます.
curl -d "token=<Token_이름>" -d json='{"parameter": {"name": "choice", "value": "Deploy"}}' -d proceed='Yes' -X POST http://<Jenkins_Username>:<Token_값>@<Jenkins_URL>/job/<Job_Name>/<Build_Number>/input/<Input_ID>/submit
ここには少し注意が必要です.(これで時間がもったいない…)私が書いたpipeline scriptを見ると、inputには
id: 'wait-approval'
が入っています.このidはInput_ID
で、apiを要求するときは最初の字を大文字に変更します.私がwait-approval
と書いていても、このように要求してこそ正常に出てくることができます..../input/Wait-approval/submit
が要求されると、.../input/wait-approval/submit
が返却される.$ curl -d "token=from_lambda" -d json='{"parameter": {"name": "choice", "value": "Deploy"}}' -d proceed='Yes' -X POST http://jenkins:[email protected]/job/slack-integration/2/input/wait-approval/submit
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404 Not Found</h2>
<table>
<tr><th>URI:</th><td>/job/slack-integration/2/input/wait-approval/submit</td></tr>
<tr><th>STATUS:</th><td>404</td></tr>
<tr><th>MESSAGE:</th><td>Not Found</td></tr>
<tr><th>SERVLET:</th><td>Stapler</td></tr>
</table>
<hr><a href="https://eclipse.org/jetty">Powered by Jetty:// 9.4.33.v20201020</a><hr/>
</body>
</html>
404 Not Found
をwait-approval
に変換すると、要求が正常に完了します.$ curl -d "token=from_lambda" -d json='{"parameter": {"name": "choice", "value": "Deploy"}}' -d proceed='Yes' -X POST http://jenkins:[email protected]/job/slack-integration/2/input/Wait-approval/submit
注意:https://issues.jenkins.io/browse/JENKINS-34509Reference
この問題について([Jenkins] pipeline interactive input (choice parameter)), 我々は、より多くの情報をここで見つけました https://velog.io/@aylee5/Jenkins-pipeline-interactive-input-choice-parameterテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol