Jenkins和多配置(矩阵)工作

jos*_*son 38 continuous-integration jenkins multi-configuration

为什么Jenkins有两种工作,包括多配置项目和自由式项目项目?我读到某个地方,一旦你选择其中一个,你就无法转换到另一个(很容易).为什么我不总是选择多配置项目以便为将来的更改安全?

我想在Windows和Unix(以及其他平台)上为项目构建设置构建.我发现了这个问题),问同样的问题,但我没有得到答案.为什么我需要三个矩阵项目(而不是三个自由式项目),每个平台一个?为什么我不能将它们全部保存在一个矩阵中,平台AND(例如)一轴上的gcc版本和另一个上的(我的)软件版本?

我也阅读了这篇博客文章,但它在同一台机器上构建了所​​有内容,只有不同的Python版本.

简而言之:大多数人如何配置针对许多不同平台的多配置项目?

Sag*_*gar 42

这两种类型的工作有不同的功能:

  • 自由式作业:这些作业允许您在单个计算机或标签(计算机组,例如"Windows-XP-32")上构建项目.
  • 多配置作业:这些允许您在多个计算机或标签上构建项目,或者混合使用两者,例如Windows-XP,Windows-Vista,Windows-7和RedHat - 用于检查兼容性或构建多个平台(qt程序?)

如果您有一个要在Windows和Unix上构建的项目,您有两个选择:

  • 为每个配置创建单独的自由样式作业,在这种情况下,您必须单独维护每个配置
  • 您有一个多配置作业,并选择2个(或更多)标签/计算机/从站 - 1个用于Windows,1个用于Unix.在这种情况下,您只需要为构建维护一个作业

您可以将gcc版本保留在一个轴上,将软件版本保留在另一个轴上.没有理由你不应该这样做.

你链接的问题有一个公平点,而是一个不涉及直接的问题:在他的情况,他有一个多配置作业一个,这-成功-触发另一个作业.现在,在多配置作业中,如果其中一个配置失败,则整个作业失败(显然,因为您希望项目在所有配置上成功构建).

恕我直言,要在多个平台上构建相同的项目,更好的方法是使用多配置样式的作业.

  • 很棒的答案!但有一个问题:我如何让Jenkins仅为Windows构建服务器启动Windows批处理文件,而仅为Linux构建服务器启用shell脚本?使用我当前的配置(多项目),它似乎也尝试在Windows上启动shell脚本. (4认同)

小智 6

另一种选择是使用python构建步骤来检查当前操作系统,然后调用适当的安装或构建脚本.在python脚本中,您可以将更新的环境保存到文件中,并使用EnvInject插件再次注入环境以进行后续构建步骤.根据构建环境的大小,您还可以使用SCons等多平台构建工具.