2009-01-08 51 views

回答

27

幾個月前我已經嘗試過這個功能,但我不再使用它(僅僅因爲我不需要它,並不是因爲它不是一個好功能)。

基本上,你定義n個軸,每個軸是一個有幾個值的屬性。讓我們來看一個例子:定義Axis「JDK」,可能的值爲「1.4」,「1.5」,「1.6」,並且定義另一個屬性「database」,其中可能的值爲「oracle」, 「MySQL的」。

因此,哈德森將啓動建設的6倍:

  • 與JDK 1.4,與屬性數據庫爲oracle
  • 與JDK 1.5,與(即JVM與-Ddatabase =甲骨文推出)屬性數據庫=預言
  • 與JDK 1.6,與屬性數據庫=預言
  • 與JDK 1.4,與屬性數據庫= MySQL的
  • 與JDK 1.5,與屬性數據庫= MySQL的
  • 與JDK 1.6,與屬性數據庫的MySQL =

然後,一旦一切都完成後,你就可以看到每個迭代的結果。

當您需要在多個環境(在我的示例中,使用不同版本的JDK或數據庫)中測試您的應用程序時,此功能可能非常有用。

請注意,除JDK軸之外,您必須自己管理Hudson提供的屬性。在我的例子中,應用程序必須考慮到「數據庫」屬性本身。最終,如果項目被maven化(參見here瞭解更多細節),最好使用此屬性來啓用Maven2配置中的特定配置文件。

我希望我的解釋非常清楚:)

+2

如何訪問非Java項目的這些屬性?作爲環境變量? – 2010-03-24 01:29:46

+2

@Sridhar通常是的,這些屬性由Hudson設置爲當前版本的環境變量。 – romaintaz 2010-03-24 07:14:28

6

矩陣構建有一些問題:

  • 廣義的插件不兼容 - 他們越來越好,但你必須保持非常向上至今。
  • 人爲因素 - 很難擺脫 - URls有點尷尬,找到他們在FS(你應該避免),現在是一場噩夢。

這是一個恥辱,因爲這個概念非常好,非常方便,它的工作原理。


編輯

  • 無法啓動單點。

我們解決這個通常的方法是已建立參數設置爲同時運行 - 它有它自己的問題,但節省了我們具有相同的代碼和不同的常數大量的就業機會。