需要在自定义ant任务中设置CruiseControl修改

时间:2010-10-03 17:13:48

标签: ant cruisecontrol

有没有办法将CruiseControl修改集传递给自定义ant任务?

我的设置:我有一个CruiseControl(原始的,不是CC.NET或类似的)实例,它监视等待测试的二进制包的SVN存储库。每当出现新的二进制包时,应将此包发送到另一个“测试主机”进行测试。这通常通过自定义ant任务工作,但有一个抢夺......

问题是二进制包是为多种体系结构构建的。我的自定义ant任务应该选择与二进制包的体系结构相匹配的“测试主机”(它为此目的维护一个“测试主机”的内部列表)。目前,只要出现任何架构的新软件包,所有“测试主机”都会收到通知,以便运行测试。

所以,我对理想的CruiseControl项目逻辑的想法是:

  • CruiseControl通过<modificationset>监控SVN目录以查找更改(以及应触发所有“测试主机”的本地文件)
  • 任何修改中,CruiseControl调用ANT脚本,后者又调用自定义ANT任务
  • 此自定义ANT任务需要知道哪些文件已被修改以触发CruiseControl运行,以便它可以根据修改后的文件的名称选择正确的“测试主机”(它们包含他们名下的建筑)

我的问题是:如何将修改集传递给该ANT任务?

我偶然发现的一个解决方案是“Modification Writer”插件,但这个插件显然只适用于CruiseControl.NET。 : - (

2 个答案:

答案 0 :(得分:0)

目前还没有现成的解决方案,但通过以下方式解决问题并不难:

对于每个项目,特定日志文件以.xml格式存在。该文件的名称如下:log20110913113343.xml。 ant任务始终知道日志。现在您需要做的是从此文件中提取所需的信息,例如:

 <modification type="clearcase">
  <file action="checkin">
    <revision>\main\axpro_LATESTfo\4</revision>
    <filename>expected</filename>
    <project>calibration\algorithms\test.u\DetectMarkersMetaTest</project>
  </file>
  <date>2011-09-12T14:22:28</date>
  <user>z002tv9v</user>
  <comment><![CDATA[Added file element "testcase_1.01.txt".
              Added file element "testcase_1.02.txt".
              Added file element "testcase_1.03.txt".
              Added file element "testcase_1.04.txt".
              Added file element "testcase_1.05.txt".
              Added file element "testcase_1.06.txt".]]></comment>
  <revision>\main\axpro_LATESTfo\4</revision>
</modification>

在那里,您可以找到当前修改集修改的所有文件。完成此操作后,您可以将它们传递到自定义任务上,然后从那里上传。我会使用xsl从文件中提取我想要的数据,但当然你可以使用你想要的任何技术:)

希望它有所帮助!

答案 1 :(得分:0)

是的,日志文件确实包含所有信息。但如果你想在你的蚂蚁任务中使用它,那你就不走运了。在构建完成之前,不会将此文件写入磁盘。唉,你不想在你想要的时候看到修改集。