2011-03-04 84 views
8

我爲我們的maven多項目創建了一個hudson作業,包含5個模塊以將SNAPSHOT構件部署到maven庫。沒關係,只要它在沒有測試失敗的情況下成功構建即可。但是,現在我想滿足以下要求:配置hudson maven作業,在測試失敗時繼續構建,但只在沒有測試失敗時部署

  • 當模塊發生測試失敗時,構建應繼續構建並測試其他模塊,但變爲黃色。使用-Dmaven.test.failure.ignore=true完成,但在下一個要求失敗。
  • 當模塊發生測試失敗時,沒有任何工件應該部署到Maven存儲庫。其他項目依賴於這個項目的快照,這些項目只想使用最新的快照,沒有任何測試失敗
  • 最好使用哈德森maven集成,而不是免費的腳本,我們得到哈德森報告頁面(每個模塊的紅色/黃色/藍色狀態,生成日誌錯誤着色,...)。特別是運行Maven構建兩次(第一個mvn test -Dmaven.test.failure.ignore=true,而不是mvn deploy -DskipTests)不是一個解決方案,因爲它是一個性能損失,它混淆了哈德森報告頁面,它不是原子的(它在第二個版本中再次從存儲庫中更新)。

有什麼辦法可以做到這一點?

回答

5

有一個後期構建選項,名爲將工件部署到Maven存儲庫。如果你沒有選擇即使構建不穩定,那麼這意味着如果測試失敗,它不會部署任何東西。與命令中的-fae一起,事情應該以您期望的方式工作

+0

陷阱:選項*將工件部署到Maven存儲庫*在自由式哈德森作業中不可用,僅在maven2哈德森作業中(顯然對於maven 3不起作用)。 – 2011-03-22 08:44:11

+0

現在,maven2 hudson/jenkins構建確實支持maven3 – 2011-04-01 13:26:29

2

也許你可以嘗試使用哈德森MVN -fae選擇與你的工作 - 它讓行家只有全力打造

+0

-fae選項(在結束時失敗)不會停止部署I presume。但它看起來比-Dmaven.test.failure.ignore = true更好,謝謝! – 2011-03-10 08:00:59

1

失敗後如果建造時間是不是對你的問題,我認爲更好的選擇是創造另一份工作,僅用於部署。事情是這樣的:

  1. 與配置你原來的工作(我們稱之爲「建設工作」)「MVN -fae乾淨安裝」
  2. 創建一個新的工作(「部署任務」)與「MVN部署」,不配置任何構建觸發
  3. 在「建設工作」,使構建其他項目選項,下生成後的行動並將其設置爲運行「部署任務」。

也許您可以嘗試將兩個作業配置爲使用相同的工作區,從而節省整個構建/部署過程的一些時間。

+1

通過使用免費腳本代替maven集成,可以在單個作業中完成,但*特別運行maven構建兩次(第一個mvn測試-Dmaven.test.failure.ignore = true,而不是mvn deploy -DskipTests)是不是一個解決方案,因爲它是一個性能損失,它混淆了哈德森報告頁面,它不是原子的(它在第二個版本中再次從存儲庫中更新)。* – 2011-03-16 07:57:11

1

如果您恰巧使用Artifactory作爲存儲庫管理器,則可以使用Hudson/Jenkins Artifactory plugin來部署您的工件。如果所有測試都通過了Maven構建的所有模塊,該插件將只部署您的構件。

+0

有趣的解決方案。雖然我們使用Nexus,但是我會看看他們是否有類似的東西。 – 2011-03-17 12:16:41

相關問題