我有一系列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项目显示自上次运行以来所做的更改,或者从触发它们的项目中“继承更改”?
答案 0 :(得分:1)
可以让依赖CCNET项目“继承”更改:
pullAndRunUnitTests
product
对product
- regressionTests
依赖项执行相同的操作:
product
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>