我可以在java中持续交付的任何东西?

时间:2011-12-18 20:41:36

标签: java continuous-deployment

如果我使用的是python,我可能希望使用pip作为一个很好的安装程序,以便通过其良好的存储库集成和脚本功能实现持续交付。
我在java中有类似的东西,在连续部署中对我有用吗?

有人可以推荐我如何在java中进行完全持续部署吗?

我将拥有多个具有复杂配置的服务器和具有数据库的巨大多个集群,NOSQL(并且对于某些项目使用maven而其他项目只是下载了pacakges)等等......有人建议吗?

我认为pip是一个非常好的安装程序,可以帮助我,任何人都有ubuntu juju的经验?

但是,如果我使用ubuntu juju,那将意味着我将不得不使用基于ubuntu的服务器,而不是使用centos。

3 个答案:

答案 0 :(得分:5)

Java应用程序构建和Java应用程序部署之间存在一种明显的界限。使用各种可用工具构建Java中的CI非常简单 - 构建脚本(Ant,Maven,Gradle等),连续构建(Jenkins,Go,Anthill等)和存储库(Nexus,Artifactory等)。图书馆的依赖管理是Java的一个发型,所以肯定使用Maven或Ivy。

部署是一个更加狂野,不太成熟的世界。环境可能要复杂得多,并且通常包括杂乱的非Java事物,如关系数据库。你可以手动滚动脚本,或使用ControlTier或Capistrano或类似的东西(这仍然需要一些手动滚动)。

答案 1 :(得分:3)

我不完全清楚pip的作用,但这是我的CI / CD工具链

您需要一个构建工具:

  • Maven(很多东西,包括下载依赖项并让你疯狂)
  • ANT(会戳你,直到你死于xml括号)
  • Gradle和其他人(包括ANT在内的每个人都使用/可以使用Ivy从存储库下载依赖项)

您需要CI服务器

  • 詹金斯
  • 各种商业选择(Teamcity,Bamboo ......)

对于部署部分,您需要部署应用程序。 这实际上取决于您使用的构建工具(应该能够进行部署)。 Maven有一些插件适用于此事件,但我认为您必须谷歌为您的应用服务器和构建工具找到满足您特定需求的解决方案。

答案 2 :(得分:2)

您正在寻找的是构建部署管道。在此处查看视频示例:http://www.youtube.com/watch?v=6CEQOuHM86Y 有多种方法可以实现它。我告诉你我的首选。

您需要的组件:

  • VCS服务器(SVN,Git)
  • CI服务器(Jenkins,Hudson,TeamCity)
  • 构建工具(Maven,Ant,Gradle)
  • 神器库(Artifactory,Nexus)
  • 部署工具(Rundeck,Puppet,Deployinator,Capistrano)
  • 目标环境/(像Tomcat,JBoss这样的应用服务器)

工作流:

1)CI服务器轮询VCS服务器以进行更改

2)当发现更改(即提交)时,启动作业执行,获取工件(CI服务器将编译并运行测试)。 CI Server内部将使用Maven等构建工具。

3)CI Server将工件上载到工件存储库

4)部署工具读取工件存储库并提供要部署的工件列表,以及目标环境列表,其中开发人员/ Ops可以选择两者的组合并在所选服务器中部署工件。

在选择工具时考虑一些标准。如果你有一个非常大的基础设施(比如200多个目标环境),像Puppet这样的强大解决方案是有道理的。如果你有一个适度的(比方说,10个目标环境),那么Rundeck就足够了。另外,请考虑一些列出的工具不是免费的(例如,Puppet Enterprise不会超过10个节点)。