Jenkins多配置矩阵

时间:2014-12-08 06:32:39

标签: jenkins continuous-integration teamcity hudson

  

背景:

我们计划从Teamcity迁移到Jenkins。大多数项目都是C / C ++,源代码在ClearCase中,并且将使用自定义构建系统。我们不会检查某个机器的源并进行构建,而是我们想要的就是在远程ClearCase节点上执行build命令。

因此,在Teamcity中构建项目配置时,这非常简单(只需提及命令,参数和节点)。由于构建配置很简单,我们认为Jenkins可以提供我们正在寻找的所有功能。

  

问题:

但是,我们必须在不同的平台(AIX,LINUX,Windows ... 32bit / 64bit..etc)上构建某些项目,并且应该在具有不同构建参数的特定节点上构建。 Teamcity允许我们为每个平台创建一个项目并在其中创建多个构建配置。对于每个构建配置,我们可以指定参数/构建节点......等等。

当我在Jenkins中寻找类似的功能时,我找到了多配置项目。我知道我们可以为平台定义一个轴,但我无法理解如何为特定平台指定特定的从节点。我不希望在所有从属节点上执行构建。关于构建参数和构建命令也可以这么说。我可能需要不同的参数并为每个构建配置构建命令。

在Jenkins的多配置项目中,是否可以将每个构建配置配置为具有单独的从属/命令/参数设置?

詹金斯在这方面的文件不是很好。为每个构建配置创建单独的项目不是一个好主意。如果我有10个平台的20个项目,那么我最终在Jenkins中创建了200个项目。在Teamcity中,我可以在每个项目中创建20个项目并创建10个构建配置。

1 个答案:

答案 0 :(得分:2)

如果您进入管理Jenkins->管理节点,您可以为已定义的节点添加标签。您可以在添加节点时添加标签,具体取决于您创建节点的方式。

你可以做一些事情,比如在他们的体系结构上定义它们,这样平台就是节点,如果你想要更多节点,那么它们可以有相同的标签。

你可以做这样的工作

enter image description here

这只需要在您想要的体系结构上运行作业。

我认为您的配置问题可以通过Job-DSL-Plugin来解决,它允许您使用专门构建的DSL创建作业


编辑:我找到了更好的解决方案

您可以使用PlatformLabel插件将平台绑定到节点标签,这些插件会在添加标签时为节点添加标签 - 您可以在配置Jenkins中看到这些 - >管理节点 - >点击节点

然后在矩阵/多配置作业中,您可以使用' Slaves' axis(如果你有节点,请注意你只获得这个轴)并找到标签部分中的所有选项,检查你想要的那些

enter image description here

要根据平台有条件地运行步骤,您可以使用Run Condition plugin

我使用了正则表达式匹配

表达:Debian 标签:$ {ENV,var =" PLATFORM"}

假设您要运行Debian的步骤并且该轴名为PLATFORM

enter image description here