【问题标题】:Jenkins multi-configuration matrixJenkins 多配置矩阵
【发布时间】:2015-02-05 18:56:16
【问题描述】:

背景:

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

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

问题:

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

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

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

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

【问题讨论】:

    标签: jenkins continuous-integration teamcity hudson


    【解决方案1】:

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

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

    你会做这样的工作

    这只负责在您想要的架构上运行作业。

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


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

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

    然后在矩阵/多配置作业中,您可以使用“从属”轴(请注意,如果您连接了节点,您只会获得此轴)并在标签部分找到所有选项,检查您想要的选项

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

    我使用了正则表达式匹配

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

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

    【讨论】:

    • 我看不到您附加的图像。我确实在节点上附加了标签。但是,我不确定如何为特定平台指定特定标签。例如,我不想在 windows 上构建 linux 包。但是矩阵配置似乎可以做到这一点,没有办法避免。
    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2021-09-03
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多