在将我们的一台构建服务器升级到最新版本的 CCNET 后,它停止向修改组发送电子邮件。我们使用 Mercurial 进行源代码控制,并且版本 2.3.2 安装在构建服务器上。
buildmasters 组仍会收到电子邮件,但不会收到修饰符:
<email mailport="25" includeDetails="true" useSSL="false">
<from>buildslave8@company.com</from>
<mailhost>###.###.##.###</mailhost>
<users>
<user name="Name" group="buildmasters" address="name@company.com"/>
</users>
<groups>
<group name="buildmasters">
<notifications>
<NotificationType>Always</NotificationType>
</notifications>
</group>
</groups>
<converters>
<regexConverter find="$" replace="@company.com" />
</converters>
<modifierNotificationTypes>
<NotificationType>Always</NotificationType>
</modifierNotificationTypes>
<subjectSettings>
<subject buildResult="Success" value="Build Status - SUCCESSFUL - ${CCNetProject} - ${CCNetLabel}" />
<subject buildResult="Fixed" value="Build Status - HAS BEEN FIXED - ${CCNetProject} - ${CCNetLabel}" />
<subject buildResult="StillBroken" value="Build Status - FAILED - ${CCNetProject}" />
<subject buildResult="Broken" value="Build Status - FAILED - ${CCNetProject}" />
<subject buildResult="Exception" value="Build Status - SERVER EXCEPTION - ${CCNetProject} - a serious error has occurred" />
</subjectSettings>
<attachments></attachments>
在挖掘构建日志后,我注意到<user>
下面的值<CCNetModifyingUsers>
发生了如下变化:
从(CCNET 1.6):
<integrationProperties>
...
<CCNetModifyingUsers>
<user>flast</user>
<user>flast</user>
</CCNetModifyingUsers>
...
</integrationProperties>
至(CCNET 1.8):
<integrationProperties>
...
<CCNetModifyingUsers>
<user>First Last</user>
<user>First Last</user>
</CCNetModifyingUsers>
...
</integrationProperties>
不确定如何填充<user>
下面的值<CCNetModifyingUsers>
或如何修复它。
更新#1:我正在尝试查看更改<converter>
为 ldapConverter 是否可以解决我的问题。
更新#2:仍在尝试弄乱ldapConverter:
<ldapConverter domainName="Name.corp" ldapLogOnUser="name" ldapLogOnPassword="pswd" />
此版本抛出异常:
EmailPublisher 异常:System.FormatException:指定的字符串不是电子邮件地址所需的格式。在 System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset, String& displayName) at System.Net.Mail.MailAddressCollection.ParseValue(String addresses) at ThoughtWorks.CruiseControl.Core.Publishers.EmailPublisher.GetMailMessage(String from,在 ThoughtWorks.CruiseControl.Core.Publishers.EmailPublisher.SendMessage(String from, String to, String replyto, String subject, String message, String workingFolder) )
虽然这样:
<ldapConverter domainName="Name.corp" ldapLogOnUser="name" ldapLogOnPassword="pswd" ldapQueryField="userPrincipalName"/>
成功构建,但不向修改器发送电子邮件。
更新#3:
我已经实施了以下临时修复:
<converters>
<regexConverter find="(?!^.?).(?!.{0}$).* " replace="" />
<regexConverter find="$" replace="@company.com" />
</converters>
但是,它不包括以下情况:
- 人们的 Mercurial
username
与他们的电子邮件地址名称不匹配 - 有双重(三重?)名字或姓氏的人
更新#4:
将不得不通过源代码来查看我是否可以准确地追踪导致问题的原因......可能必须保持它的本地构建。