使CruiseControl.NET项目显示自上次运行以来所做的更改

时间:2012-10-25 11:41:01

标签: mercurial cruisecontrol.net

我有一系列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项目显示自上次运行以来所做的更改,或者从触发它们的项目中“继承更改”?

1 个答案:

答案 0 :(得分:1)

可以让依赖CCNET项目“继承”更改:

  1. 向项目pullAndRunUnitTests
  2. 添加Modification Writer Task
  3. 向项目product
  4. 添加Modification Reader Task

    product - regressionTests依赖项执行相同的操作:

    1. 修改作家任务到项目product
    2. 项目regressionTests
    3. 的修改阅读器任务

      像这样:

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