如何将项目属性输出到构建XML日志,以便它们可以在XSL文件中使用?

时间:2011-08-25 03:05:18

标签: cruisecontrol.net cruisecontrol

我们使用cruisecontrol进行日常自动测试。我们使用JUnit框架。对于每种情况,我们都有一个输出文件,而不是junit case的日志文件。我们在构建完成时将输出文件添加到项目的工件目录中。我们使用内置的XSL文件“unittests.xsl”来发布电子邮件结果。   最近,我想修改xsl文件“unittests.xsl”,为每种情况添加一个超链接到输出文件。这是我一开始就尝试过的:

<td class="unittests-data" width="300">
    <a href="{concat('artifacts/',$projectname,'/',$cctimestamp,'/autotest_logs/',..//..//@name,'_',..//@name,'.log')}"><xsl:value-of select="..//@name"/></a>
</td>

这里的问题是,使用Web浏览器打开结果页面时,输出文件的url可以正常工作;但结果邮件中的url不正确。在邮件中,网址标题为: http://localhost:18080/cruisecontrol/buildresults/artifacts/ ...

但我想要的是:

http://localhost:18080/cruisecontrol/artifacts/ ...

所以我想到另一种方法来解决这个问题。我的想法是将根URL的属性输出到项目日志,以便XSL文件可以像这样得到它的值:

<xsl:variable name="urlroot" select="/cruisecontrol/info/property[@name='urlroot']/@value"/>
<td class="unittests-data" width="300">
    <a href="{concat($urlroot,'artifacts/',$projectname,'/',$cctimestamp,'/autotest_logs/',..//..//@name,'_',..//@name,'.log')}"><xsl:value-of select="..//@name"/></a>
</td>

问题在于,项目的属性(在config.xml中定义)不会输出到项目日志中。所以我不能这样做。

还有其他方法可以达到这个目的吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

  1. 创建一个xml文件以保存您在CC发布阶段需要拥有的属性
  2. 在构建期间使用属性填写xml文件
  3. 将文件复制到构建结束时的CC合并目录
  4. 在xsl转换器中定位属性值
  5. 如果在构建期间将属性回显到CC日志,则它们最终会出现在CC日志中不可预测的位置。一种可靠的方法是专门为您需要的东西创建一个xml文件,并将其合并到日志中。现在,您可以可靠地定位xsl中的值。

答案 1 :(得分:0)

您可以简单地将属性传递给某些antbuilde并回显它们。然后,当您合并日志文件时,属性值将在其中。