2011-10-22 120 views
0

我想要做一個與Maven發佈插件假定的意思略有不同的「發佈」。通過Maven,SVN和Hudson(jenkins)發佈

我有一個web項目(我想「釋放」),這取決於各種其他項目,也是由相同的哈德森(而不是模塊雖然)構建。

「釋放」應做到以下幾點:通過哈德森

  • 構建所有dependend^dependend項目
  • 構建Web項目(加上遞增的版本號來體現)
  • 部署Web項目到tomcat(這已經在常規版本中)
  • 創建一個新標籤,其中包含版本號在svn位置x
  • 複製所有當前svn/head項目的源頭,狡猾的建設新的標籤
  • 改變所有參與項目的所有POM版本爲$ {VERSIONNUMBER} .0.1-快照,SVN /頭

我想這是每個人都必須做,只是很辛苦通過谷歌找到實際的解決方案。

+0

你最後的假設是一個有趣的假設。你爲什麼這麼認爲? – bmargulies

回答

0

如果您有特定的需求,那麼我認爲最簡單的方法是使用腳本。 幾種腳本語言可以用作哈德森的構建步驟。

0

聽起來很像我們的要求。我們還沒有完全在詹金斯那裏完成。

所以,我們有以下步驟:

  1. 宣佈代碼凍結,以使所有團隊在樹幹「正確」的代碼,並有相互「同步」的代碼。

  2. 我們運行一個(自家種植的)java工具,檢查代碼是否創建發佈和發佈標籤的分支。從下一次迭代開始,它還將使用新的快照版本更新主幹。該工具具有自己的配置文件,以便知道版本號是/將會是什麼以及哪些項目(以及它們位於何處)需要更新。

  3. 我們運行「內部發布」工作,與我們的所有內部企業回購(它只知道第三方和外部回購)幾乎沒有關係。這項工作清除了當地的Maven回購(它有自己的回購,沒有其他工作使用)。我下載了我們所有項目的特定子文件夾(我們需要在作業中配置該文件夾),並使用每個項目的subversion-tag-parameter和一個額外的Mega-project pom,它將所有下載的項目聲明爲模塊(需要轉到根文件夾) 。這項工作也可以完成所有的打包工作(壓縮靜態內容,將來自不同項目的靜態文件合併爲一個工具,...)。

  4. 部署

  5. 功能測試

到目前爲止,2都有它自己的工作和3是完全自動的,我們只需要手動啓動它。第4步是爲CI工作,第5步是爲CI計劃的。步驟4是發佈過程中需要自動化的熱門人選(即使它只是部分)。

我希望這會有所幫助,並給你一些想法。