在CCNET 1.6到1.8升级后,CCNetModifyingUsers <user>值发生变化</user>

时间:2013-03-21 17:36:03

标签: ldap cruisecontrol.net ccnet-config

将我们的一个构建服务器升级到最新版本的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>

To(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:指定的字符串不是电子邮件地址所需的格式。      at System.Net.Mime.MailBnfHelper.ReadMailAddress(String data,Int32&amp; offset,String&amp; displayName)      在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)      在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与他们的电子邮件地址'name
  • 不符
  • 拥有双重(三重?)名字或姓氏的人

更新#4:

将不得不通过源代码来查看我是否可以准确追踪导致问题的原因......可能必须维持它的本地构建。

1 个答案:

答案 0 :(得分:0)

我在2013年11月处理了这个问题。我必须安装CCNET源代码并修改EmailLDAPConverter.cs。 Convert方法使用SSAMAccountName Active Directory属性创建搜索过滤器。这会失败。我最终过滤了Active Directory&#34; displayName&#34;属性。