You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在参数化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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:15:16