Jenkins JobDSL 只在 Debian 上构建了一半的工作——没有抛出错误

Jenkins JobDSL only builds half the job on Debian - no error thrown

我正在将 Jenkins 从 Windows 迁移到 Debian。我有一个在 Windows 机器上运行良好的 JobDSL,但在 Debian 上使用它,它只构建了一些 XML 模块并且无法解释大多数其他模块,即它们显示为未配置的 fields/their 节点config.xml 中不存在。 DSL 是从它自己的 Jenkins 作业中调用的,该作业仅检查代码,然后从文件中调用 DSL。如果出现问题,即如果 DSL 找不到它应该配置的插件,则构建将失败或变得不稳定,具体取决于错误是什么。

然而,创建作业以 'SUCCESS' 完成,即使它的 DSL 被翻译成错误的 config.xml。这样一来,我就想不出哪里出了问题。

在这两个系统上,Jenkins 是 1.596.2,DSL Plugin 是 1.32(Win)/1.34(Deb)。我小心地安装了 DSL 需要的所有 Jenkins 插件。

编辑:我通过 将 Groovy 更新为 2.2.2,但 DSL 效果没有变化。

有谁知道这可能是什么原因造成的?

如果您的问题是由于旧的 groovy 版本引起的,您可以通过 debian backports: (it is also described in this answer)

安装更新的版本
  1. deb http://http.debian.net/debian wheezy-backports main(或其他发行版,如 squeeze,您可能只看其他行)添加到您的 /etc/apt/sources.list
  2. apt-get update 作为根用户(或通过 sudo
  3. apt-get install -t wheezy-backports groovy(如有必要,再次替换 wheezy

使用apt-get更新的优点是

  • 它始终使版本保持最新(使用向后移植时),并且
  • 它安装系统范围,即为所有用户安装。自 the GVM homepage 起,GVM 似乎并非如此:

It will then create a .gvm/ folder in your home directory, and neatly install all candidates beneath it.

在开始为我的 post 提取一个独立的代码示例时,我发现效果似乎是由 archiveXunit 模块引起的。当我在 publishers 部分省略它时,一切都按预期进行。包括它会导致奇怪的干扰,例如到 SCM 和 Log Rotation 模块。

作为旁注,我同时将 Debian 升级到 Jessie,因为 Wheezy 不支持 groovy2 软件包(版本 2.x.x),安装它需要一些不必要的体操。我什至不需要在 Jessie 上使用反向移植。 (我想知道快速发展的 Jenkins 和保守的 Debian 的结合是否首先是一个不错的选择,但我想时间会证明一切。)

所以,是的......对我来说似乎是一个插件问题。我还写信给插件的邮件列表 here。我会继续调查这个。

更新:

这似乎是一个插件问题,但不是来自 JobDSL,而是来自 xUnit 和 JUnit 插件之间的依赖关系。我想创建一个特别精简的设置并停用 JUnit 插件,假设我在我的系统上没有 Java 构建或测试......好吧:在激活 xUnit 而不是 JUnit 的情况下,JobDSL 以上述方式失败。激活 JUnit 可以解决这个问题。 Here 是我对 Jenkins JIRA 中 xUnit 小错误的描述。