1

以下のような一連の CruiseControl.NET ターゲットがあります。最初のプロジェクトは、リポジトリから変更セットを取得し、これらの変更に対して高速な単体テストを実行します。これらの単体テストが成功すると、完全な製品がビルドされ、成功すると、新しくコンパイルされた製品で大規模なテスト スイートが実行されます。

<project name="pullAndRunUnitTests">
    <triggers>
        <intervalTrigger seconds="300"/>
    </triggers>
    <sourcecontrol repo="$(Repo)" type="hg" revertModifications="true"/>
    <tasks>
        <nant>
            <targetList>
                <target>unitTests</target>
            </targetList>
        </nant>
    </tasks>
</project>
<project name="product">
    <triggers>
        <projectTrigger project="pullAndRunUnitTests"/>
    </triggers>
    <tasks>
        <nant>
            <targetList>
                <target>all</target>
            </targetList>
        </nant>
    </tasks>
</project>
<project name="regressionTests">
    <triggers>
        <projectTrigger project="product"/>
    </triggers>
    <tasks>
        <nant>
            <targetList>
                <target>regressiontests</target>
            </targetList>
        </nant>
    </tasks>
</project>

このセットアップの問題は、単体テストだけが誰がビルドを壊したかを正しく特定することです。チェーン内の後続のプロジェクトが壊れた場合、実際に誰が/何が壊れたのかを特定するのが難しくなる可能性があります。

CruiseControl.NET プロジェクトに、前回の実行以降に行われた変更を表示する方法、またはそれらをトリガーするプロジェクトから「変更を継承」する方法はありますか?

4

1 に答える 1

1

依存する CCNET プロジェクトに変更を「継承」させることができます。

  1. プロジェクトにモディフィケーション ライター タスクを追加するpullAndRunUnitTests
  2. プロジェクトにモディフィケーション リーダー タスクを追加するproduct

product-regressionTests依存関係についても同じことを行います:

  1. プロジェクトへの変更ライタータスクproduct
  2. プロジェクトへの変更リーダー タスクregressionTests

このような:

<project name="pullAndRunUnitTests">
    ...
    <tasks>
        <modificationWriter>
            <filename>changes-product.xml</filename>
            <path>..</path>
            <appendTimeStamp>True</appendTimeStamp>
        </modificationWriter>
        <nant>...</nant>
    </tasks>
</project>
<project name="product">
    ...
    <tasks>
        <modificationReader>
            <filename>changes-product.xml</filename>
            <path>..</path>
            <deleteAfterRead>True</deleteAfterRead>
        </modificationReader>
        <modificationWriter>
            <filename>changes-regressionTests.xml</filename>
            <path>..</path>
            <appendTimeStamp>True</appendTimeStamp>
        </modificationWriter>
        <nant>...</nant>
    </tasks>
</project>
<project name="regressionTests">
    ...
    <tasks>
        <modificationReader>
            <filename>changes-regressionTests.xml</filename>
            <path>..</path>
            <deleteAfterRead>True</deleteAfterRead>
        </modificationReader>
        <nant>...</nant>
    </tasks>
</project>
于 2012-10-25T14:42:02.773 に答える