如何在参数化Jenkins项目的Active Choice响应式参数Groovy脚本中获取当前构建用户
在Jenkins Active Choice响应式参数中获取当前用户的解决方法
首先要明确核心问题:在参数化项目的参数配置阶段(也就是Active Choice脚本执行时),构建还未启动,因此无法直接获取“当前构建用户名”——此时还没有生成构建实例,不存在关联的构建用户信息。以下是两种场景的可行方案:
1. 获取触发参数构建的当前登录用户
如果需要拿到正在Jenkins页面操作触发构建的登录用户,使用以下Groovy代码:
import hudson.model.User import jenkins.model.Jenkins def currentUser = User.current() return currentUser ? [currentUser.getId()] : ["匿名用户"]
注意:如果通过API、定时任务等非页面交互方式触发构建,
User.current()会返回null,此时会返回“匿名用户”。
2. 获取上一次构建的用户名(若需参考历史)
如果需要获取项目上一次构建的触发用户,可使用:
import hudson.model.Job import hudson.model.Run import hudson.model.Cause def job = Jenkins.instance.getItem(env.JOB_NAME) if (job instanceof Job) { def lastBuild = job.lastBuild if (lastBuild) { def userCause = lastBuild.getCause(Cause.UserIdCause) if (userCause) { return [userCause.userId] } } } return ["无历史构建用户"]
关键注意事项
- 若脚本执行报错,需前往Manage Jenkins > In-process Script Approval审批相关API调用(比如
User.current()、Jenkins.instance.getItem())。 env.BUILD_USER这类构建环境变量仅在构建阶段可用,参数阶段无法读取,这也是你之前代码失效的主要原因。
内容的提问来源于stack exchange,提问作者purval_patel
相关产品推荐
相关产品推荐

