2

如果我使用的是 python,我可能希望使用pip它作为一个很好的安装程序来持续交付,它具有很好的存储库集成和脚本功能。
我在 java 中有什么类似的东西在持续部署中对我有用吗?

有人可以推荐我他们如何在 Java 中进行完整的持续部署吗?

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

我再次认为 pip 是一个非常好的安装程序,可以帮助我,有人可能有经验ubuntu juju吗?

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

4

3 回答 3

5

Java 应用程序构建和 Java 应用程序部署之间有一种明确的界限。在 Java 中构建 CI 非常简单,可以使用多种工具 - 构建脚本(Ant、Maven、Gradle 等)、持续构建(Jenkins、Go、Anthill 等)和存储库(Nexus、Artifactory 等)。库的依赖管理对于 Java 来说是个毛球,所以绝对要使用 Maven 或 Ivy。

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

于 2012-10-24T15:36:29.693 回答
3

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

你需要一个构建工具:

  • Maven(做了很多事情,包括下载依赖和让你发疯)
  • ANT(会戳你直到你用 xml 括号死)
  • Gradle 和其他(包括 ANT 在内的几乎所有人都使用/可以使用 Ivy 从存储库下载依赖项)

你需要一个 CI 服务器

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

对于部署部分,您需要一些东西来部署您的应用程序。这实际上取决于您使用的构建工具(应该能够进行部署)。Maven 为这个 afaik 提供了一些插件,但我认为你必须在谷歌上搜索你的应用服务器和构建工具才能找到满足你特定需求的解决方案。

于 2011-12-19T09:27:47.383 回答
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 Server 轮询 VCS Server 的变化

2)当发现变更(即提交)时,开始执行作业,获取工件(CI Server 将编译并运行测试)。CI 服务器内部将使用像 Maven 这样的构建工具。

3) CI 服务器将工件上传到工件存储库

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

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

于 2013-04-13T06:01:30.053 回答