哈德森落后一步

时间:2010-05-16 13:59:26

标签: junit hudson rake

我正在使用Hudson的filesytem插件,当构建发生时,它会查找新的/修改过的文件,将它们复制到Workspace,使用Rake运行测试,然后发布这些junit xml结果文件。

但是,更新的junit xml结果文件在下一次构建之前不会被推送到工作区。这意味着当发布junit xml结果文件时,它总是落后一步。这意味着我需要在结果显示之前运行两次构建。

Rake任务是在项目目录中创建junit xml文件。我已经尝试输出到工作区目录,但它似乎使事情变得更糟,结果根本没有发布。

我在这里做了一些根本错误的事吗?是否有一种简单的方法可以将这些junit xml结果推送到工作空间,以便后期构建“发布JUnit测试结果报告”实际上针对新创建的xml文件运行?

1 个答案:

答案 0 :(得分:0)

我对以下句子感到困惑:

  

但是,更新后的junit xml结果文件不会被推送到   工作区直到下一次构建。

Rake是否生成junit.xml?整个描述听起来像:构建发生在Hudson之外。构建生成junit.xml,Hudson只需获取构建和junit.xml并将其复制到工作空间以发布junit.xml。因此,hudson在构建(包括junit测试)之前检测到更改,并且只有一半的构建甚至是旧构建。修复方法是配置比构建所花费的时间更长的periode,或让你的构建通知Hudson何时运行rake job。配置设置为“Trigger build remotly”而不是poll SCM。即使rake生成junit.xml,也可能是rake实际上运行在旧版本的代码上,因为rake作业在新的构建工件可用之前就开始了。

我的建议是使用Hudson构建并将两个作业链接在一起,以便在构建作业完成时触发rake作业。必要的构建工件的传输可以通过Hudson之外的存储库(可以像网络共享一样简单)。在这种情况下,构建作业会将必要的文件复制到存储库中,并且rake作业会再次将其拉出。您还可以使用Hudson的归档工件函数。另一个更优雅的选项是Clone Workspace SCM Plugin,它处理工作区到另一个工作的转移。