Jenkins "Не отправлять почту незарегистрированному пользователю"

Дженкинс отказывается отправлять сообщения об ошибках некоторым пользователям. В журнале я нашел эти сообщения:

....
Build step 'Maven Goals aufrufen' marked build as failure
Not sending mail to unregistered user [email protected]
Sending e-mails to: [email protected]
Finished: FAILURE

Пользователь (user1) указан в списке администраторов. У него также зарегистрировано электронное письмо ([email protected]).

Интерфейс администратора Jenkins Peoaple

Итак, почему этот пользователь вызвал незарегистрированного пользователя?

При поиске этого предупреждения я обнаруживаю несколько открытых проблем JIRA, таких как https://issues.jenkins-ci.org/browse/JENKINS-43178 Но это мне не помогает.

Является ли это неправильной конфигурацией или ошибкой jenkins?

Ответ 1

У незарегистрированного пользователя не было пароля jenkins. После ввода пароля в поле пароля пользователя jenkins почтовые отправления отправляются этому пользователю.

Чтобы ввести пароль

  • перейти к управлению пользователями "Люди": http://jenkins/asynchPeople/ введите описание изображения здесь
  • выберите пользователя
  • выберите "Настроить"
  • Введите пароль в поле пароля

Пароль пользователя

Ответ 2

Проблема была (для меня):

 SECURITY-372 (advisory) Emails were sent to addresses not associated with
 actual users of Jenkins.

Я использую Jenkins с триггером Gerrit для вновь созданных наборов патчей или опубликованных черновиков. С помощью этого "исправления" безопасности Дженкинс попытается "угадать" имя пользователя по имени перед адресом электронной почты. Например, в разделе "Имя-фамилия" часть "Имя-фамилия" будет именем пользователя, которое jenkins пытается найти в пользовательской базе данных Jenkins, но эта комбинация не совпадает с идентификатором, который используется в нашей LDAP, и, таким образом, jenkins не будет отправлять электронные письма. нет... если:

https://wiki.jenkins.io/display/JENKINS/Email-ext+plugin#Email-extplugin-2.57.2(April10,2017)

If the security fix is undesirable in a particular instance, it can be disabled with either or both of the following two system properties:

    -Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true: send mail to build culprits even if they do not seem to be associated with a valid Jenkins login.
    -Dhudson.tasks.MailSender.SEND_TO_USERS_WITHOUT_READ=true: send mail to build culprits associated with a valid Jenkins login even if they would not otherwise have read access to the job.

Эти JAVA_ARGS могут быть добавлены в /etc/default/jenkins или /etc/sysconfig/jenkins, в зависимости от вашего дистрибутива.

Ответ 3

Там Allow sending to unregistered users настройки в меню Configure System по крайней мере, в Jenkins 2.150.1.

Ответ 4

Чтобы прояснить ответ Маттиаса: Даже если учетная запись пользователя создается во время сборки (поскольку SCM предоставляет информацию об коммиттерах), он по-прежнему остается незарегистрированным пользователем Дженкинса. Таким образом, никакие электронные письма не будут отправлены этому пользователю.

Если вы перейдете к соответствующей учетной записи пользователя в <your-jenkins-URL>/asynchPeople/, вы можете настроить эту учетную запись и ввести для нее пароль. Теоретически, пользователь может войти в Jenkins, используя этот пароль, сейчас. И как только учетная запись пользователя Jenkins имеет связанный пароль, она больше не считается "незарегистрированной". И получат уведомления по электронной почте. Вуаля.

Ответ 5

Из ОП не ясно, используют ли они LDAP, но вот некоторая информация, которая решила это для меня, и которую я нигде не нашел, включая Jenkins JIRA.

Следующее предложение:

-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS = истина

так же как:

Разрешить отправку незарегистрированным пользователям

а также:

Создать коммиттер как пользователь Jenkins

не работал для меня. Однако первый ответ поставил меня на путь решения проблемы. Оказывается, что при использовании LDAP Jenkins фактически сопоставляется с именем пользователя коммиттера git. Так что, если сообщение git commit:

Committer: John Doe <[email protected]>  2019-05-27 19:12:00

Дженкинс возьмет "Джон Доу", преобразует его в "john.doe" и попытается сопоставить с LDAP. Теперь, если ваше имя пользователя LDAP - "john.doe", вы в порядке, но в моем случае стандарт компании - "doejohn", что приведет к страшному сообщению:

Not sending mail to unregistered user [email protected]

Это сообщение вводит в заблуждение, так как показывает правильный адрес электронной почты вместо упоминания выдуманного (несуществующего) имени пользователя. Решением для меня было настроить имя пользователя git на "doejohn":

$ git config --global user.name "doejohn"