After upgrading one of our build servers to the latest version of CCNET it stopped sending emails to modifiers group. We've using Mercurial for source control and version 2.3.2 is installed on the build server.
buildmasters group still gets emails but not modifiers:
<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>
After digging through the build logs I noticed that <user>
value under <CCNetModifyingUsers>
has changed as follows:
From (CCNET 1.6):
<integrationProperties>
...
<CCNetModifyingUsers>
<user>flast</user>
<user>flast</user>
</CCNetModifyingUsers>
...
</integrationProperties>
To (CCNET 1.8):
<integrationProperties>
...
<CCNetModifyingUsers>
<user>First Last</user>
<user>First Last</user>
</CCNetModifyingUsers>
...
</integrationProperties>
Not sure how the <user>
value under <CCNetModifyingUsers>
gets populated or how to fix it.
UPDATE #1: I'm trying to see if changing the <converter>
to ldapConverter will resolve my issues.
UPDATE #2: Still trying to mess with the ldapConverter:
<ldapConverter domainName="Name.corp" ldapLogOnUser="name" ldapLogOnPassword="pswd" />
This version throws and exception:
EmailPublisher exception: System.FormatException: The specified string is not in the form required for an e-mail address. at 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, String to, String replyto, String subject, String messageText, String workingFolder, String[] attachments) at ThoughtWorks.CruiseControl.Core.Publishers.EmailPublisher.SendMessage(String from, String to, String replyto, String subject, String message, String workingFolder)
While this:
<ldapConverter domainName="Name.corp" ldapLogOnUser="name" ldapLogOnPassword="pswd" ldapQueryField="userPrincipalName"/>
Successfully builds, but does not send emails out to the modifiers.
UPDATE #3:
I've put the following temporary fix in place:
<converters>
<regexConverter find="(?!^.?).(?!.{0}$).* " replace="" />
<regexConverter find="$" replace="@company.com" />
</converters>
It however does not cover the following cases:
- people's Mercurial
username
does not match their email address' name - people who have a double (triple?) first or last names
UPDATE #4:
Will have to go through the source code to see if I can track down exactly what's causing the issues... might have to maintain a local build of it going forward.