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 回答