Jenkins 哈德逊-建筑矩阵项目经验

Jenkins 哈德逊-建筑矩阵项目经验,jenkins,continuous-integration,hudson,Jenkins,Continuous Integration,Hudson,有没有人尝试过这个功能并得到一些反馈?或者有人知道一些有用的示例可供查找吗?几个月前我尝试过这个功能,但我不再使用它(只是因为我不需要它,而不是因为它不是一个好功能) 基本上,定义n轴,每个轴都是具有多个值的属性 让我们来看一个例子:您使用可能的值“1.4”、“1.5”、“1.6”定义轴“JDK”,并定义另一个属性“database”,其中可能的值是“oracle”、“mysql” 因此,Hudson将启动您的构建6次: 对于JDK1.4,属性数据库=oracle(即JVM是使用-Ddatab

有没有人尝试过这个功能并得到一些反馈?或者有人知道一些有用的示例可供查找吗?

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

基本上,定义n轴,每个轴都是具有多个值的属性

让我们来看一个例子:您使用可能的值“1.4”、“1.5”、“1.6”定义轴“JDK”,并定义另一个属性“database”,其中可能的值是“oracle”、“mysql”

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

  • 对于JDK1.4,属性数据库=oracle(即JVM是使用-Ddatabase=oracle启动的)
  • 对于JDK1.5,属性数据库=oracle
  • 对于JDK1.6,属性数据库=oracle
  • 对于JDK1.4,属性数据库=mysql
  • 对于JDK1.5,属性数据库=mysql
  • 对于JDK1.6,属性数据库=mysql
然后,一旦一切完成,您将能够看到每次迭代的结果

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

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


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

矩阵构建有许多问题:

  • 与插件完全不兼容-它们正在变得更好,但您需要保持非常及时的更新
  • 工件-更难扭转-URL有点尴尬,在FS上找到它们(无论如何都应该避免)现在是一场噩梦
这是一个遗憾,因为这个概念非常好,在它工作的地方非常方便


编辑

  • 无法启动单点

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

如何访问非Java项目的这些属性?作为环境变量?@Sridhar通常是的,这些属性由Hudson设置为当前构建的环境变量。好的,这个问题已经过期很久了,但我在设置矩阵项目时遇到了困难-有关于如何配置的指针吗?:)我需要的是使用Jenkins groovy库来确定轴。有办法吗?我希望能够使用
和凭据
sh
等工具提取值您有更好的建议吗?我正在考虑使用矩阵构建将我们的unittest套件分割成若干相同的作业,每个作业运行套件的不同子集(将我们的测试周期从当前的40分钟提高到我们在构建步骤中实际使用代码来启动参数化作业,因此父级“kicker”或“scheduler”作业,启动下游作业。我们使用原因参数将它们链接起来,使用guid参数在离开队列后查找作业,以便父作业可以显示它启动的所有子作业。这是-单个作业被参数化,并且可以使用父作业+其他视图创建工具来查看它们。我们还使用允许并发运行功能.