23

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

4

2 回答 2

27

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

基本上,您定义 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 (有关详细信息,请参阅此处)。

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

于 2009-01-08T14:07:56.217 回答
6

矩阵构建有许多问题:

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

这是一个耻辱,因为这个概念非常好并且在它工作的地方非常方便。


编辑

  • 无法开始单点。

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

于 2011-06-02T16:47:32.043 回答