2013-03-21 66 views
1

将我们的一台生成服务器升级到最新版本的CCNET后,它停止向修改器组发送电子邮件。我们使用Mercurial进行源代码控制,版本2.3.2安装在构建服务器上。CCNetModifyingUsers <user>将CCNET 1.6升级到1.8升级后的值更改

buildmasters组仍然得到电子邮件,但不修饰:

<email mailport="25" includeDetails="true" useSSL="false"> 
      <from>[email protected]</from> 
      <mailhost>###.###.##.###</mailhost> 
      <users> 
       <user name="Name" group="buildmasters" address="[email protected]"/> 
      </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> 

通过构建日志我注意到,<CCNetModifyingUsers><user>值发生了如下变化挖后:

从(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> 

不知道<CCNetModifyingUsers><user>价值如何被填充或如何解决它。

更新#1:我试图看看是否将<converter>更改为ldapConverter将解决我的问题。

更新#2:仍在试图乱用ldapConverter:

<ldapConverter domainName="Name.corp" ldapLogOnUser="name" ldapLogOnPassword="pswd" /> 

这个版本抛出和异常:

EmailPublisher异常信息:System.FormatException:指定的字符串不是形式需要一个电子邮件地址。 在System.Net.Mime.MailBnfHelper.ReadMailAddress(字符串数据,的Int32 &偏移,字符串&的displayName) 在System.Net.Mail.MailAddressCollection.ParseValue(字符串地址) 在ThoughtWorks.CruiseControl.Core.Publishers.EmailPublisher。 GetMailMessage(字符串from,String to,String replyto,String subject,String messageText,String workingFolder,String []附件) at ThoughtWorks.CruiseControl.Core.Publishers.EmailPublisher.SendMessage(String from,String to,String replyto,String subject ,字符串信息,字符串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:

将不得不通过源代码,看看我是否能追查究竟是什么导致了这些问题......可能要维持一个本地编译它前进。

回答

0

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