Изменение значения 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.

Другие вопросы по тегам