Изменение значения CCNetModifyingUsers <user> после обновления CCNET 1.6 до 1.8
После обновления одного из наших серверов сборки до последней версии 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(Строковые данные, Int32& offset, String& displayName) в System.Net.Mail.MailAddressCollection.ParseValue(Строковые адреса) в ThoughtWorks.CruiseControl.Core.Publishers.EmailPubless.StringPublisher.GetMail fromGringMail String to, String replyto, String subject, String messageText, String workingFolder, String[] attachments) в ThoughtWorks.CruiseControl.Core.Publishers.EmailPublisher.SendMessage(String from, String to, String replyto, Строковый субъект, Строковое сообщение, Строковый workingFolder)
Пока это:
<ldapConverter domainName="Name.corp" ldapLogOnUser="name" ldapLogOnPassword="pswd" ldapQueryField="userPrincipalName"/>
Успешно строит, но не отправляет электронные письма модификаторам.
ОБНОВЛЕНИЕ № 3:
Я установил следующее временное исправление:
<converters>
<regexConverter find="(?!^.?).(?!.{0}$).* " replace="" />
<regexConverter find="$" replace="@company.com" />
</converters>
Однако это не распространяется на следующие случаи:
- народная ртуть
username
не соответствует имени их адреса электронной почты - люди, которые имеют двойные (тройные?) имена или фамилии
ОБНОВЛЕНИЕ № 4:
Придется пройтись по исходному коду, чтобы увидеть, смогу ли я отследить, что именно вызывает проблемы... возможно, придется поддерживать его локальную сборку в будущем.
1 ответ
Я имел дело с этим в ноябре 2013 года. Мне пришлось установить исходный код CCNET и изменить EmailLDAPConverter.cs. Метод Convert создает фильтр поиска с использованием атрибута Active Directory SSAMAccountName. Это не удастся. Я закончил фильтрацию по атрибуту "displayName" Active Directory.