我已将Jenkins设置为仅向使用email-ext插件破坏构建的用户发送电子邮件,但我收到此错误:
不向未注册用户user@example.com发送邮件,因为您的SCM声称这与用户ID'John Smith'您的安全领域无法识别;您可能需要更改SCM插件
我真的不明白这个错误意味着什么,我们的SCM或电子邮件插件中的问题是什么?电子邮件是从提交历史中提取的,我应该在某处注册,以便Jenkins开始工作吗?
供参考,插件的源代码中为this is the code around the error message:
} 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
?
此bug report中也提到了错误消息。
答案 0 :(得分:25)
答案 1 :(得分:12)
好的,经过一些实验,这就是我发现的:
Jenkins接受提交者的电子邮件部分(不是作者)。例如,对于看起来像这样的提交消息:
Author: John Smith <author1@example1.com> 2017-07-27 17:15:39
Committer: John Doe <committer1@example2.com> 2017-07-27 17:15:39
Parent: 9c3ff18dda8ca6f7b7ac4ebab4c76d3c85891a33 (commit)
Branch: master
Jenkins将采用&#34; committer1&#34;,并在具有用户ID和#34; committer1&#34;的人员下创建一个全新的用户。并发送电子邮件&#34;&#34;。除非该用户有密码,否则它将被视为未注册,因此您需要转到该用户的配置并为其添加密码字段:
所以这是解决错误的一种方法,但是你必须为每个用户和大团队做这件事,这可能很乏味。
答案 2 :(得分:8)
将下面的行放在你的jenkins启动脚本中
-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true
最新的Jenkins安全指令仅允许向注册用户发送邮件。上面的一行绕过了这个配置。
答案 3 :(得分:1)
鉴于jenkins接收了电子邮件地址的第一部分并创建了一个用户,我让我的团队将他们的jenkins用户名作为他们电子邮件地址的第一部分。这消除了必须维护两个独立用户的任何开销。