如何知道哪个用户回答了Jenkins管道输入步骤?

如何知道哪个用户回答了Jenkins管道输入步骤?,jenkins,versioning,jenkins-pipeline,Jenkins,Versioning,Jenkins Pipeline,我有一个Jenkinsfile脚本,它测试执行SVN合并的可能性,然后请求用户提交合并的权限 我想知道回答“输入”步骤的用户名,以便将其写入提交消息 这可能吗 这是假设我想做的: outcome = input message: 'Merge trunk into branch?', ok: 'Merge' echo "User that allowed merge: ${outcome.user}" 目前不可能,因为现在在输入步骤中只返回输入参数答案,如中所述: //TODO:也许我们应该返

我有一个Jenkinsfile脚本,它测试执行SVN合并的可能性,然后请求用户提交合并的权限

我想知道回答“输入”步骤的用户名,以便将其写入提交消息

这可能吗

这是假设我想做的:

outcome = input message: 'Merge trunk into branch?', ok: 'Merge'
echo "User that allowed merge: ${outcome.user}"

目前不可能,因为现在在
输入步骤中只返回输入参数
答案,如中所述:

//TODO:也许我们应该返回另一个对象以允许工作流查找
//是谁批准的?
开关(mapResult.size()){
案例0:
返回null;//如果没有参数,则没有值
案例1:
返回mapResult.values().iterator().next();
违约:
返回映射结果;
}
如果您想限制哪些用户可以批准输入步骤,您可以使用
submitter
参数,例如:

输入消息:“批准”,提交人:“授权提交人”
编辑


自2017年1月起,现在可以请求发送其他参数。请参见上文。

如果关闭
groovy沙盒,则可以对异常执行此操作:

try {
 'Deploy to production?'

 node {
  sh 'echo deploying'
  }
} catch(e) {
  def user = e.getCauses()[0].getUser()
   echo "Production deployment aborted by:\n ${user}"
}

input
步骤有一个可选选项,允许指定返回的
Map
的键,该键应包含提交输入对话框的用户:

如果指定,这是返回值的名称,该返回值将包含批准此输入的用户的ID。
返回值的处理方式与
参数
值类似。
类型:字符串

这看起来如下所示:

def feedback=input(submitter参数:'submitter',…)
echo“提交对话框的是${feedback.submitter}”

附言:如果有人对一个完整的代码片段感兴趣,它会返回用户对对话框的正面和负面反馈(以及超时),我会指出。

如果您没有要求输入任何参数,那么添加submitterParameter就可以了。它没有将其作为参数添加到返回对象上,而是将返回的对象转换为包含用户名的字符串

def feedback = input(submitterParameter: 'submitter')
echo "It was ${feedback} who submitted the dialog."

同时(见我的答案):-)非常好,谢谢你的更新!您的答案现在应该是已接受的答案:-),或者您将该方法列为白名单,而不是关闭沙箱。使用此方法,您无法在try块中获取用户ID。这将检索触发生成的用户,不一定与填写inputOn jenkins v2.128的用户相同:def submitter=input(消息:“确认部署?”,submitter参数:“submitter”);echo“部署确认人:${submitter}“这是问题还是示例代码?分配
输入
调用的返回值,并将其作为
提交者参数
是没有意义的。这是一个示例代码,是的,它没有意义,这就是为什么我发布它,因为它出于某种未知的原因工作。如果我不传递
submitter参数
(该值无关紧要),它将不起作用。这就是为什么我对这个答案被接受感到困惑。也许这是一个错误,或者他们在詹金斯身上改变了这一点。这个答案与斯蒂芬金两个月前的答案有什么不同?我在回答中解释道。不同之处在于,如果不使用其他输入参数,则结果不是一个映射,在该映射中可以从feedback.submitter获取submitter,但实际上submitter是反馈对象本身中的值。