2011-06-06 112 views
5

我想建立一個持續集成環境,在提交源代碼之後,它會觸發一個構建過程,檢查代碼,運行測試,構造一個war文件並將其部署到jetty服務器使用戶/測試人員可以在瀏覽器上訪問應用程序。Jenkins/jetty自動部署

這可能嗎?

我正在使用maven和jetty(我不願意改變這一點,我在開發和生產中都使用jetty)。對於CI,我正在探索Jenkins,但是我可以向其他開源解決方案開放。

如果可能,我該如何設置環境。

回答

6

我找到了一個名爲cargo的maven插件。它擁有我需要的一切。我將它添加到我的POM中,以便使用mvn貨物部署和取消部署:deploy/mvn cargo:undeploy。我創建了一個新的jenkins作業並添加了取消部署,將構建maven目標作爲構建步驟進行打包。一切都很完美。

+2

你能發佈你的例子嗎?你是否創建了一個單獨的模塊進行部署?你在該模塊級還是在根級執行「mcn cargo:deploy」?等 – Alex 2012-06-13 00:36:06

+0

該項目有一個單一的網絡模塊。即使有多個模塊......我只需要確保Web模塊可以自行編譯,然後只在Web模塊上使用貨物。 – joshua 2012-06-13 08:54:10

3

這絕對有可能。在以前的項目中,構建服務器(teamcity)將war複製到構建服務器和應用程序服務器之間共享的nfs位置,並運行一個連接到應用程序服務器並重新啓動jetty的小shell腳本。

我們使用maven內部的ant來管理部署,我記得我們使用了copy和sshexec任務。

我相信還有很多其他的解決方案,但那個解決方案對我們來說很有效。

+0

感謝您的幫助。喬希。 – joshua 2011-06-08 10:06:08

+0

我決定使用簡單的「scp」命令將WAR複製到服務器。貨物插件沒有工作,太複雜了,沒有給出任何價值。 – Alex 2012-06-18 18:23:38

1

我回顧了很多這樣的帖子,但我想要獨立於maven的東西。看看這裏,這是哈德森/詹金斯的獨立運動員。你只需要'戰爭',甚至不需要手動碼頭安裝。 Deploy war on jetty in Jenkins or Hudson job