我有一个Jenkinsfile脚本,用于测试执行SVN合并的可能性,然后要求用户提交合并的权限。
我想知道回答“输入”步骤的用户名,以便将其写入提交消息。
这可能吗?
这是假设我想做的事情:
outcome = input message: 'Merge trunk into branch?', ok: 'Merge'
echo "User that allowed merge: ${outcome.user}"
答案 0 :(得分:17)
input
步骤有一个可选的submitterParameter
,它允许指定应该包含提交输入对话框的用户的返回Map
的键:
如果指定,则这是返回值的名称,该值将包含批准此输入的用户的ID 返回值将以类似
parameters
值的方式处理 输入:字符串
这看起来如下:
def feedback = input(submitterParameter: 'submitter', ...)
echo "It was ${feedback.submitter} who submitted the dialog."
P.S:如果有人对完整的代码片段感兴趣,请将用户的正面反馈和负面反馈返回给对话框(并且还会超时),我请指向our pipeline library。
答案 1 :(得分:3)
目前无法实现,目前只有input step
答案中会返回输入参数,如source code中所述:
// TODO: perhaps we should return a different object to allow the workflow to look up
// who approved it, etc?
switch (mapResult.size()) {
case 0:
return null; // no value if there's no parameter
case 1:
return mapResult.values().iterator().next();
default:
return mapResult;
}
如果您想限制哪些用户可以批准输入步骤,您可以使用submitter
参数,例如:
input message: 'Approve ?', submitter: 'authorized-submitter'
修改强>
自2017年1月起,现在可以请求发送其他参数。请参阅上面的StephenKing answer。
答案 2 :(得分:2)
如果您没有在输入上询问任何参数,那么添加submitterParameter就可以了。它没有将它作为参数添加到返回对象上,而是将返回的对象转换为包含用户名的字符串。
def feedback = input(submitterParameter: 'submitter')
echo "It was ${feedback} who submitted the dialog."
答案 3 :(得分:1)
如果您关闭groovy-sandbox
:
try {
'Deploy to production?'
node {
sh 'echo deploying'
}
} catch(e) {
def user = e.getCauses()[0].getUser()
echo "Production deployment aborted by:\n ${user}"
}