【问题标题】:Experience with Hudson - Building matrix projectHudson 的经验 - 构建矩阵项目
【发布时间】:2010-09-30 06:31:52
【问题描述】:

有没有人尝试过该功能并有一些反馈?或者有谁知道一些有用的样本可以查找?

【问题讨论】:

    标签: jenkins continuous-integration hudson


    【解决方案1】:

    几个月前我尝试过这个功能,但我不再使用它(只是因为我不需要它,而不是因为它不是一个好功能)。

    基本上,你定义n个轴,每个轴是一个有几个值的属性。

    让我们举个例子:定义轴“JDK”,可能值为“1.4”、“1.5”、“1.6”,并定义另一个属性“database”,其中可能值为“oracle”、“ mysql”。

    因此,Hudson 将启动您的构建 6 次:

    • 使用 JDK 1.4,属性 database=oracle(即 JVM 使用 -Ddatabase=oracle 启动)
    • 使用 JDK 1.5,使用属性 database=oracle
    • 使用 JDK 1.6,使用属性 database=oracle
    • 使用 JDK 1.4,使用属性 database=mysql
    • 使用 JDK 1.5,使用属性 database=mysql
    • 使用 JDK 1.6,使用属性 database=mysql

    然后,一旦一切完成,您将能够看到每次迭代的结果。

    当您需要在多个环境中测试您的应用程序时(在我的示例中,使用不同版本的 JDK 或数据库),此功能可能非常有用。

    请注意,除了 JDK 轴,您必须自己管理 Hudson 作为条目给出的属性。在我的示例中,应用程序必须考虑“数据库”属性本身。最后,一个好主意是使用这个属性在 Maven2 配置中启用一个特定的配置文件,如果你的项目是 mavenized 的话(有关详细信息,请参阅 here)。

    我希望我的解释足够清楚:)

    【讨论】:

    • 如何访问非 Java 项目的这些属性?作为环境变量?
    • @Sridhar 通常是的,这些属性由 Hudson 设置为当前构建的环境变量。
    • 好的,这个问题早就过期了,但我在设置矩阵项目时遇到了困难——关于如何配置的任何指针? :)
    • 我需要的是使用 Jenkins groovy 库来确定轴。有没有办法做到这一点?我希望能够使用withCredentialssh 等来提取值
    【解决方案2】:

    矩阵构建有许多问题:

    • 与插件广泛不兼容 - 它们正在变得更好,但您需要保持最新状态。
    • 人工制品 - 更难摆脱 - 网址有点尴尬,在 FS 上找到它们(无论如何都应该避免)现在是一场噩梦。

    这很遗憾,因为这个概念非常好,而且在它起作用的地方非常方便。


    编辑

    • 无法开始单点。

    我们通常的解决方法是将参数化构建设置为同时运行 - 这有其自身的问题,但可以避免我们有许多具有相同代码和不同常量的作业。

    【讨论】:

    • 您有更好的建议吗?我正在考虑使用矩阵构建将我们的单元测试套件分成许多相同的作业,每个作业运行套件的不同子集(以将我们的测试周期从目前的 40 分钟缩短到
    • 我们实际上在构建步骤中使用代码来启动参数化作业 - 因此父“启动器”或“调度器”作业启动下游作业。我们使用 cause 参数将它们链接起来,并使用 guid 参数来查找队列中的作业,以便父作业可以显示它启动的所有子作业。这是 - 单个作业被参数化,并且可以使用父级+其他视图创建工具来查看它们。我们也使用允许并发运行功能。
    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    相关资源
    最近更新 更多