1

ビルド サーバーの 1 つを最新バージョンの CCNET にアップグレードした後、modifiers グループへの電子メールの送信が停止しました。ソース管理には 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& オフセット、文字列& displayName) で System.Net.Mail.MailAddressCollection.ParseValue(文字列アドレス) で ThoughtWorks.CruiseControl.Core.Publishers.EmailPublisher.GetMailMessage(文字列から、送信先の文字列、返信先の文字列、件名の文字列、messageText の文字列、workingFolder の文字列、添付ファイルの文字列) )

これの間:

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

ビルドは成功しますが、修飾子に電子メールを送信しません。

更新 #3:

次の一時的な修正を行いました。

<converters>
   <regexConverter find="(?!^.?).(?!.{0}$).* " replace="" />
   <regexConverter find="$" replace="@company.com" />
</converters>

ただし、次の場合は対象外です。

  • 人のMercurialusernameがメールアドレスの名前と一致しません
  • 姓または名が二重(三重?)の人

更新 #4:

ソースコードを調べて、問題の原因を正確に追跡できるかどうかを確認する必要があります...今後はローカルビルドを維持する必要があるかもしれません.

4

1 に答える 1

0

2013 年 11 月にこれに対処しました。CCNET ソース コードをインストールし、EmailLDAPConverter.cs を変更する必要がありました。Convert メソッドは、SSAMAccountName Active Directory 属性を使用して検索フィルターを作成します。これは失敗します。Active Directoryの「displayName」属性でフィルタリングすることになりました。

于 2016-12-06T17:15:33.603 に答える