2014-12-08 148 views
0

背景:詹金斯多配置矩阵

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

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

问题:

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

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

在詹金斯一个多配置项目,是否有可能配置每个构建配置为具有单独的从/命令/参数设置?

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

回答

2

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

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

它,你会做这样的事情

enter image description here

这需要照顾的只是你想要的体系结构上运行的作业的作业。

我觉得跟配置你的问题可以用Job-DSL-Plugin它允许你用一个专门修建的DSL创造就业机会


编辑来解决:我发现了一个更好的解决方案

可以绑定平台节点使用PlatformLabel插件的标签会在添加标签时添加标签 - 您可以在配置Jenkins-> manage nodes->中单击节点012>在“从”轴(请注意,如果您有相连的节点,你只能得到这个轴),发现在标签部分中的所有选择,检查那些你想

enter image description here

要有条件地运行基于该平台的一个步骤您可以使用Run Condition plugin

我用正则表达式匹配

表达:Debian的 标签:$ {ENV,VAR = “平台”}

这假设你要运行Debian的步骤和该轴称为平台

enter image description here

+0

我看不到你附有影像。我的标签附有节点。但是,我不确定如何为特定平台指定特定标签。例如,我不想在Windows上构建Linux包。但矩阵配置似乎这样做,并且没有办法避免这种情况。 – ernesto 2014-12-08 10:32:05

+0

我用很多文字更新了我的答案 – KeepCalmAndCarryOn 2014-12-08 20:33:48