Jenkins BUILD_USER_ID缺少Git SCM触发的管道的PropertyException

Jenkins BUILD_USER_ID缺少Git SCM触发的管道的PropertyException,jenkins,groovy,Jenkins,Groovy,我需要从Jenkins管道获取构建用户ID,并使用本教程成功实现: 当用户手动触发时,它工作,但当GitSCM触发时返回错误 groovy.lang.MissingPropertyException:没有这样的属性:类的BUILD\u USER\u ID:groovy.lang.Binding 请提供帮助。仅当生成具有userid时才设置生成用户ID原因: public boolean setJenkinsUserBuildVars(SCMTriggerCause, 映射变量){ 如果(

我需要从Jenkins管道获取
构建用户ID
,并使用本教程成功实现:

当用户手动触发时,它工作,但当GitSCM触发时返回错误

groovy.lang.MissingPropertyException:没有这样的属性:类的BUILD\u USER\u ID:groovy.lang.Binding


请提供帮助。

仅当生成具有userid时才设置生成用户ID原因:

public boolean setJenkinsUserBuildVars(SCMTriggerCause,
映射变量){
如果(原因!=null){
setUsernameVars(“SCMTrigger”,变量);
返回true;
}否则{
返回false;
}
}

publicstaticvoid setUsernameVars(字符串用户名、映射变量){
变量.put(构建\用户\变量\名称、用户名);
变量.put(BUILD_USER_FIRST_NAME_VAR_NAME,getFirstName(username));
变量.put(BUILD\u USER\u LAST\u NAME\u VAR\u NAME,getLastName(username));
}

为了克服这个问题,您可以在使用前检查BUILD\u USER\u ID是否存在。

是的,这就是我要找的。谢谢
UserIdCause userIdCause = (UserIdCause) build.getCause(UserIdCause.class);
        if(new UserIdCauseDeterminant().setJenkinsUserBuildVars(userIdCause, variables)) {
            return;
        }
public boolean setJenkinsUserBuildVars(UserIdCause cause,
            Map<String, String> variables) {
        if(null != cause) {
            String username = cause.getUserName();
            UsernameUtils.setUsernameVars(username, variables);

            String userid = StringUtils.trimToEmpty(cause.getUserId());
            variables.put(BUILD_USER_ID, userid);
// set BUILD_USER_NAME to fixed value if the build was triggered by a change in the scm
        SCMTrigger.SCMTriggerCause scmTriggerCause = (SCMTrigger.SCMTriggerCause) build.getCause(SCMTrigger.SCMTriggerCause.class);
        if (new SCMTriggerCauseDeterminant().setJenkinsUserBuildVars(scmTriggerCause, variables)) {
            return;
        }
public boolean setJenkinsUserBuildVars(SCMTriggerCause cause,
            Map<String, String> variables) {

        if (cause != null) {
            UsernameUtils.setUsernameVars("SCMTrigger", variables);

            return true;
        } else {
            return false;
        }
    }
public static void setUsernameVars(String username, Map<String, String> variables) {
        variables.put(BUILD_USER_VAR_NAME, username);
        variables.put(BUILD_USER_FIRST_NAME_VAR_NAME, getFirstName(username));
        variables.put(BUILD_USER_LAST_NAME_VAR_NAME, getLastName(username));
    }