Jenkins BUILD_USER_ID MissingPropertyException для конвейера, запускаемого Git SCM - PullRequest
0 голосов
/ 19 декабря 2018

Мне нужно получить BUILD_USER_ID из конвейера Jenkins, и успешно реализовано с использованием этого учебника: здесь

Работает, когда пользователь запускает вручную, но возвращает ошибку при запуске GitSCM.

groovy.lang.MissingPropertyException: No such property: BUILD_USER_ID for class: groovy.lang.Binding

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 24 декабря 2018

BUILD_USER_ID устанавливается, только если сборка имеет UserIdCause:

https://github.com/jenkinsci/build-user-vars-plugin/blob/master/src/main/java/org/jenkinsci/plugins/builduser/BuildUser.java#L84-L88

UserIdCause userIdCause = (UserIdCause) build.getCause(UserIdCause.class);
        if(new UserIdCauseDeterminant().setJenkinsUserBuildVars(userIdCause, variables)) {
            return;
        }

https://github.com/jenkinsci/build-user-vars-plugin/blob/master/src/main/java/org/jenkinsci/plugins/builduser/varsetter/impl/UserIdCauseDeterminant.java#L42

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);

Если сборка была запущенаот SCMTrigger у вас не будет BUILD_USER_ID.вместо этого вы бы имели BUILD_USER:

https://github.com/jenkinsci/build-user-vars-plugin/blob/master/src/main/java/org/jenkinsci/plugins/builduser/BuildUser.java#L78

// 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;
        }

https://github.com/jenkinsci/build-user-vars-plugin/blob/master/src/main/java/org/jenkinsci/plugins/builduser/varsetter/impl/SCMTriggerCauseDeterminant.java#L15

public boolean setJenkinsUserBuildVars(SCMTriggerCause cause,
            Map<String, String> variables) {

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

            return true;
        } else {
            return false;
        }
    }

https://github.com/jenkinsci/build-user-vars-plugin/blob/master/src/main/java/org/jenkinsci/plugins/builduser/utils/UsernameUtils.java#L28

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));
    }

преодолетьэто, вы можете проверить, существует ли BUILD_USER_ID до его использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...