背景:
我们计划从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个构建配置。
答案 0 :(得分:2)
如果您进入管理Jenkins->管理节点,您可以为已定义的节点添加标签。您可以在添加节点时添加标签,具体取决于您创建节点的方式。
你可以做一些事情,比如在他们的体系结构上定义它们,这样平台就是节点,如果你想要更多节点,那么它们可以有相同的标签。
你可以做这样的工作
这只需要在您想要的体系结构上运行作业。
我认为您的配置问题可以通过Job-DSL-Plugin来解决,它允许您使用专门构建的DSL创建作业
您可以使用PlatformLabel插件将平台绑定到节点标签,这些插件会在添加标签时为节点添加标签 - 您可以在配置Jenkins中看到这些 - >管理节点 - >点击节点
然后在矩阵/多配置作业中,您可以使用' Slaves' axis(如果你有节点,请注意你只获得这个轴)并找到标签部分中的所有选项,检查你想要的那些
要根据平台有条件地运行步骤,您可以使用Run Condition plugin
我使用了正则表达式匹配
表达:Debian 标签:$ {ENV,var =" PLATFORM"}
假设您要运行Debian的步骤并且该轴名为PLATFORM