【问题标题】:Hudson results one step behind哈德逊的结果落后了一步
【发布时间】:2023-04-04 12:16:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: junit hudson rake


    【解决方案1】:

    我对下面这句话感到困惑:

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

    Rake 是否生成 junit.xml?整个描述听起来像:构建发生在哈德逊之外。该构建生成了 junit.xml,Hudson 只是获取了该构建和 junit.xml 并将其复制到工作区以发布 junit.xml。因此,hudson 在构建(包括 junit 测试)完成之前检测到更改,并且只有一半的构建甚至旧构建。解决方法是配置比您的构建时间更长的周期,或者让您的构建通知 Hudson 何时运行您的 rake 作业。配置设置将是“远程触发构建”而不是轮询 SCM。即使 rake 生成了 junit.xml,也可能是 rake 实际上在旧版本的代码上运行,因为 rake 作业在新的构建工件可用之前开始。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多