Jenkins拒绝向某些用户发送错误邮件。 在日志中我发现了这些消息:
....
Build step 'Maven Goals aufrufen' marked build as failure
Not sending mail to unregistered user user1@example.org
Sending e-mails to: user2@example.org
Finished: FAILURE
用户(user1)列在管理员列表中。他还有一封注册邮箱(user1@example.org)。
那么为什么这个用户被称为未注册用户?
在搜索此警告时,我发现了几个开放的JIRA问题,例如https://issues.jenkins-ci.org/browse/JENKINS-43178 但这些对我没有帮助。
这是错误配置还是jenkins错误?
答案 0 :(得分:7)
问题是(对我来说):
SECURITY-372 (advisory) Emails were sent to addresses not associated with
actual users of Jenkins.
我正在使用Jenkins和Gerrit触发器来创建新创建的Patchsets或已发布的草稿。 有了这个安全"修复",詹金斯将尝试猜测"电子邮件地址前的名称中的用户名。例如"名称姓氏","名称姓氏"部分将是用户名jenkins尝试在Jenkins UserDB中查找,但该组合与我们的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中,具体取决于您的发行版。
答案 1 :(得分:5)
Jenkins 2.150.1中至少在Allow sending to unregistered users
菜单下有Configure System
设置。
答案 2 :(得分:3)
未注册的用户没有jenkins密码。在jenkins用户密码字段中输入密码后,邮件将发送给该用户。
输入密码
答案 3 :(得分:3)
澄清马蒂亚斯的回答: 即使在构建期间创建了用户帐户(因为SCM提供了有关提交者的信息),它仍然是Jenkins的“未注册用户”。因此,不会向该用户发送电子邮件。
如果您导航到<your-jenkins-URL>/asynchPeople/
处的相应用户帐户,则可以配置此用户帐户并为其输入密码。从理论上讲,用户现在可以使用此密码登录Jenkins。一旦Jenkins用户帐户关联密码,就不再将其视为“未注册”。并将收到电子邮件通知。瞧。
答案 4 :(得分:0)
从OP尚不清楚他们是否使用LDAP,但是这里有一些信息可以为我解决该问题,而且我在任何地方都找不到,包括Jenkins JIRA。
以下建议:
-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true
以及:
Allow sending to unregistered users
和:
Create committer as Jenkins user
对我不起作用。不过,第一个答案确实使我步入了一个解决方案的轨道。 事实证明,在使用LDAP时,Jenkins实际上与git committer的用户名匹配。因此,如果git commit消息为:
Committer: John Doe <John.Doe@company.com> 2019-05-27 19:12:00
Jenkins将采用“ John Doe”,将其转换为“ john.doe”,然后尝试与LDAP匹配。现在,如果您的LDAP用户名是“ john.doe”,那很好,但是在我的情况下,公司标准是“ doejohn”,这将导致出现可怕的消息:
Not sending mail to unregistered user John.Doe@company.com
此消息极易引起误解,因为它显示了正确的电子邮件地址,而不是提及发明的(不存在的)用户名。对我来说,解决方案是将git用户名配置为“ doejohn”:
$ git config --global user.name "doejohn"