2011-12-18 55 views
2

如果我使用的是python,我可能希望使用pip作爲一個不錯的安裝程序,它具有良好的存儲庫集成和腳本功能。
我有什麼類似的Java在持續部署中對我有用嗎?任何我可以建立在Java持續交付?

有人可以推薦我他們如何做完整的持續部署在Java?

我將擁有多臺具有複雜配置和巨大多個集羣的數據庫,NOSQL(以及一些項目使用maven,而其他人只是下載pacakges)等等......任何人都有建議?

再次,我認爲點是一個非常好的安裝程序,可以幫助我,任何人都有經驗可能與ubuntu juju

但是,如果我使用ubuntu juju,這意味着我將不得不使用基於Ubuntu的服務器,而不是使用centos。

+1

也許http://jenkins-ci.org/ – oers 2011-12-19 08:55:20

+0

CI服務器結合自定義腳本或類似capistrano /結構應該幫助。看到[這個問題](http://stackoverflow.com/q/183091/922954)。 – aishwarya 2011-12-19 08:59:48

回答

3

我不是完全清楚什麼點子呢,但這裏是我的CI/CD

你需要一個構建工具,工具鏈:

  • 的Maven(做了很多的東西,包括下載依賴和你發瘋)
  • ANT(除非您使用XML括號死會捅你)
  • 搖籃和其他人(幾乎每個人,包括ANT使用/可使用常春藤下載存儲庫中的依賴)

你需要一個CI服務器

  • 詹金斯
  • 各種商業選項(TeamCity的,竹...)

對於你需要的東西來部署應用程序的部署的一部分。 這真的取決於您使用的構建工具(應該能夠進行部署)。 Maven對這個afaik有一些插件,但我認爲你必須爲你的應用服務器和構建工具提供google,才能找到滿足你特定需求的解決方案。

+0

謝謝,你有什麼機會可以詳細說明gradle vs buildr嗎? – Jas 2011-12-19 11:50:26

+0

沒有抱歉,但這對於stackoverflow.com是一個很好的問題 – 2011-12-19 14:24:32

5

在Java應用程序構建和Java應用程序部署之間存在着一種鮮明的界限。使用各種可用的工具 - 構建腳本(Ant,Maven,Gradle等),連續構建(Jenkins,Go,Anthill等)和存儲庫(Nexus,Artifactory等),在Java中構建CI非常簡單。圖書館的依賴管理是Java的毛病,所以絕對使用Maven或Ivy。

部署是一個更加茫茫,不太成熟的世界。這些環境可能要複雜得多,並且通常包括像關係數據庫這樣的非Java事物。你可以手動滾動腳本,或使用ControlTier或Capistrano或類似的東西(這仍然會涉及一些手動滾動)。

2

可能您正在尋找的是構建部署管道。查看視頻示例:http://www.youtube.com/watch?v=6CEQOuHM86Y 有多種方式可以實現它。我會告訴你我的首選。

組件,你將需要:

  • VCS服務器(SVN,GIT)
  • CI服務器(詹金斯,哈德森的TeamCity)
  • 生成工具(Maven的,螞蟻,搖籃)
  • 神器存儲庫(Artifactory,Nexus)
  • 部署工具(Rundeck,Puppet,Deployinator,Capistrano)
  • 目標環境/ s(應用程序服務器,如Tomcat時,JBoss)

工作流程:

1)CI服務器輪詢VCS服務器更改

2)當一個變化被發現(即提交),開始作業執行,得到一個假象( CI服務器將編譯並運行測試)。 CI Server內部將使用像Maven這樣的構建工具。

3)CI服務器上傳工件到一個工件存儲庫

4)部署工具讀取工件存儲庫,並提供工件的列表將被部署,加上目標環境的列表,其中開發者/運營人員可以選擇的組合並在選定的服務器中部署工件。

在選擇工具時考慮一些標準。如果你有一個非常大的基礎設施(比如200多個目標環境),像Puppet這樣的可靠解決方案是有意義的。如果你有一個適中的(比如說10個目標環境),那麼Rundeck就足夠了。另外,考慮到一些列出的工具不是免費的(例如,Puppet Enterprise在10個節點之外不是免費的)。