我有一个带输入提示的Jenkins声明性管道。
stage('Approval') {
when {
branch "qa"
}
input {
message "Approve release?"
ok "Yes"
parameters {
string(name: 'IS_APPROVED', defaultValue: 'Yes', description: 'Approve?')
}
}
steps {
echo "Commit to master"
}
}
我有一个第三方应用程序,它从业务领域用户中抽象出Jenkins的使用。我想要第三方应用程序中的一个按钮,当点击它时,将批准生产版本的构建。
我是否可以调用Jenkins REST API为舞台提供输入参数并恢复构建。
答案 0 :(得分:6)
免责声明:恕我直言,此功能记录不足。我从一堆SO问题中得到了大部分答案,其中包含部分答案和一些博客文章,而实际的Jenkins文档则很少。但是,它似乎在Jenkins 2.73.2上运行良好。
首先,我认为您需要为id
添加input
属性。
然后,您可以向其中一个发送POST请求:
http://yourjenkins/job/${YOUR_PROJECT}/${BUILD_NUMBER}/input/${INPUT_ID}/abort
这将取消您的工作并忽略任何参数。
http://yourjenkins/job/${YOUR_PROJECT}/${BUILD_NUMBER}/input/${INPUT_ID}/proceedEmpty
这将恢复您的工作并忽略任何参数。
http://yourjenkins/job/${YOUR_PROJECT}/${BUILD_NUMBER}/input/${INPUT_ID}/submit
这将恢复您的工作,您可以发送参数。但是:
proceed
参数。json
的网址编码JSON文档发送{"parameter":[{"name":"param1","value":"valueOfParam1"},{"name":"param2","value":"valueOfParam2"}]}
参数,这些参数将是您的实际输入参数。json
参数,则无论如何您的工作仍将继续,它将不会获得任何参数。 http://yourjenkins/job/${YOUR_PROJECT}/${BUILD_NUMBER}/wfapi/inputSubmit
这似乎是正确的方法。您需要发送inputId
和json
(请参阅上一点)。成功时,这将返回“200 OK”,空响应。您还可以在已暂停的作业中查看/wfapi
和/wfapi/nextPendingInputAction
以获取更多信息。
请记住,您需要为每个请求发送身份验证凭据和CSRF令牌。此外,对于您描述的用例,您可能不需要input
的参数,只需要继续/中止内置操作。