Плагин электронной почты Jenkins не отправляет электронное письмо пользователю, который нарушил сборку
Я установил Jenkins для отправки писем только пользователям, которые нарушили сборку с помощью модуля электронной почты-ext, но я получаю эту ошибку:
Не отправлять почту незарегистрированному пользователю [email protected], потому что ваш SCM утверждал, что это связано с идентификатором пользователя "John Smith", который ваша область безопасности не распознает; вам могут потребоваться изменения в вашем плагине SCM
Я действительно не понимаю, что означает эта ошибка, проблема в нашем SCM или в плагине электронной почты? Письма взяты из истории фиксации, если я зарегистрирую их где-нибудь, чтобы Дженкинс начал работать?
Для справки это код вокруг сообщения об ошибке в исходном коде плагина:
} catch (UsernameNotFoundException x) {
if (SEND_TO_UNKNOWN_USERS) {
listener.getLogger().printf("Warning: %s is not a recognized user, but sending mail anyway%n", userAddress);
} else {
listener.getLogger().printf("Not sending mail to unregistered user %s because your SCM"
........
Как включить SEND_TO_UNKNOWN_USERS
?
Сообщение об ошибке также упоминается в этом отчете .
Ответы
Ответ 1
Хорошо, после некоторых экспериментов это то, что я узнал:
Дженкинс берет электронную почту коммиттера (а не автора). Например, для сообщения фиксации, которое выглядит так:
Author: John Smith <[email protected]> 2017-07-27 17:15:39
Committer: John Doe <[email protected]> 2017-07-27 17:15:39
Parent: 9c3ff18dda8ca6f7b7ac4ebab4c76d3c85891a33 (commit)
Branch: master
Дженкинс возьмет "committer1" и создаст совершенно нового пользователя под People с идентификатором пользователя "committer1" и электронной почтой "". Если у этого пользователя нет пароля, он будет считаться незарегистрированным, поэтому вам нужно перейти к настройке для этого пользователя и добавить к нему поле пароля:
![введите описание изображения здесь]()
Итак, это один из способов исправить ошибку, но вы должны сделать это для каждого пользователя, а в большой команде это может быть утомительным.
Ответ 2
Для версии V2.61 или выше это можно настроить с помощью переключателя.
Идти к
Управление Jenkins → Настройка системы → Расширенное уведомление по электронной почте
и установите флажок Разрешить отправку незарегистрированным пользователям
![enter image description here]()
Ответ 3
Поместите строку ниже в ваш запуск jenkins script
-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true
Самая новая директива безопасности Jenkins разрешает отправлять почту зарегистрированному пользователю. Строка выше обходит эту конфигурацию.
Ответ 4
Учитывая, что jenkins берет первую часть адреса электронной почты и создает пользователя, я сделал так, чтобы в моей команде их имя пользователя jenkins было первой частью их адреса электронной почты. Это избавило вас от необходимости поддерживать двух отдельных пользователей.