Jenkins API+Pipeline深度实践之input的自动化
· 阅读需 9 分钟

本文分享的小
Tips是在我前面的文章DevOps建设之基于钉钉OA审批流的自动化上线中提到的,当通过API自动触发Jenkins Pipeline流水线执行时,如果原来的流水线中定义了在构建正式开始后还需要接收用户input的步骤,想要自动绕过或自动执行input的方法
pipeline input概述
首先回过头再来看看pipeline input的语法及功能,参考我之前总结的pipeline input语法
input指令stage允许使用input step提示输入。在stage将暂停任何后options已被应用,并在进入前agent块为stage或评估when的条件stage。如果input批准,stage则将继续。作为input提交的一部分提供的任何参数将在其余的环境中可用stage。
可选项
- message
必需的,这将在用户提交时显示给用户
input - id
可选标识符
input,默认为stage名称 - ok
input表单上“确定”按钮的可选文本 - submitter
可选的逗号分隔列表,这些列表允许用户提交此用户或外部组名
input。默认为允许任何用户。 - submitterParameter
环境变量的可选名称,用该
submitter名称设置(如果存在) - parameters 提示提交者提供的可选参数列表。请参阅Pipeline parameters以获取更多信息
背景概述
基于上面的语法描述,我这里线上发布流水线中input的功能仅仅是需要用户进行确认,所以没有传递任何参数,通过这种简单的input控制及timeout超时机制,实现了用户选择参数并点击开始构建后需要在60秒内二次确认的功能,流水线的部分内容如下
stage('Deploy to prod'){
when {
environment name: 'PerformType', value: 'Deploy'
}
steps{
timeout(time:60, unit:'SECONDS') {
input "确认要部署到线上环境吗?"
script{
try {
...
}
catch (exc) {
...
throw(exc)
}
}
}
}
}
到这里问题就产生了,input的过程是在流水线运行过程中动态出现的,如果是想要在钉钉OA审批通过后自动通过调用jenkins api并传入参数让整个流水线自动执行,并且自动进行input的确认操作或者绕过input,应该怎么做呢?