Плагин электронной почты 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 было первой частью их адреса электронной почты. Это избавило вас от необходимости поддерживать двух отдельных пользователей.