即使Soursecontrol无法访问,Cruisecontrol任务也可以执行

时间:2012-05-21 11:42:51

标签: cruisecontrol.net nunit-console prebuild

我已经部署了CruiseControl.Net(版本1.6.7981.1)服务器,它执行以下任务:

  1. 构建触发器
  2. 贴标机
  3. VSTS Soursecontrol块(从TFS 2010服务器获取soursecode)
  4. 在调试模式下构建代码
  5. 使用Nanat任务
  6. 运行NUnit测试
  7. 合并NUnit-Result.xml(发布商任务)
  8. 由于每次运行NUnit任务之前需要清除NUnit-Result.xml文件,我在Nant.build文件中添加了删除任务,该文件在NUnit任务运行之前删除了NUnit-results.xml。

    现在我的问题是当我的构建获得触发器并且如果我的TFS服务器不可访问时,构建失败并且只有发布者任务运行,因此Old Nunit结果文件在失败的构建中合并。

    我尝试运行“预建”任务,但只有在可以访问TFS服务器时它才有效。

    现在我想要的是删除Nunit-result.xml的任务,即使我的TFS不可访问(在soursecontrol块之前或发布者块之内/之后)也可以运行它

    提前致谢

3 个答案:

答案 0 :(得分:0)

您可以在文件合并之前添加exec任务以删除publishers部分中的文件

像这样:

<publishers>
  <xmllogger />
  <statistics />
  <buildpublisher>
    <sourceDir>$(buildDir)\_PublishedWebsites\$(projectName)</sourceDir>
    <publishDir>$(webDir)</publishDir>
    <useLabelSubDirectory>false</useLabelSubDirectory>
    <alwaysPublish>false</alwaysPublish>
  </buildpublisher>
  <exec>
    <executable>$(workingDir)\deleteNunitResultxml.cmd</executable>
  </exec>
   ...
</publishers>

答案 1 :(得分:0)

在最后有一个发布者移动nunit结果文件或删除它。然后它就不会用于下一次构建。

答案 2 :(得分:0)

另一个选择是创建一个在nunit任务运行之前运行的任务,它删除nunit-result.xml文件。

E.g。执行 cmd / c“del NUnit-Result.xml”