在测试和prod环境中使用Maven和Jenkins部署到tomcat

时间:2012-07-23 12:54:07

标签: java tomcat maven deployment jenkins

我正在为我的应用程序编写构建脚本,并且想知道在test / prod环境中部署/发布的最佳实践是什么。

目前我所写的是

  1. 使用ssh停止tomcat服务器。
  2. 使用Maven构建战争
  3. 使用ssh
  4. 从tomcat webapps dir中删除战争
  5. 使用ssh将构建的文件传输到tomcat上的webapps目录
  6. 启动服务器
  7. 我知道这不是部署应用的最佳方式,并希望得到您的反馈。我理想的做法是

    1. 为prod env执行maven发布。如果可能,最多为修订号。
    2. 标记代码。
    3. 将已发布的战争上传到包含所有战争及其历史记录的S3文件夹。
    4. 在将从S3下载文件的服务器/ Jenkins上编写脚本(版本号,如果提供最新的版本)并部署到tomcat。
    5. 我很困惑这个第4步应该是在Jenkins还是在服务器上。我使用EC2实例来托管Web应用程序,因此我的图像需要有脚本。

2 个答案:

答案 0 :(得分:5)

首先,您要混合构建和部署。我建议通过Maven进行建设。部署是一个不同的故事。

I would suggest to change your build in that way to produce with a single run in Jenkins or on command line artifacts which can be deployed in test and production.

我的意思是制作通过Maven发布插件发布版本的工件,因为您提供的工件要测试和/或生成必须可重现的工件。

这些是在您的存储库管理器(Artifactory,Archiva,Nexus)中拥有它们之后产生工件的东西,下一步是将它们部署到适当的区域,如测试或生产。这可以通过Maven通过maven cargo plugintomcat plugin等或其他插件来实现。 但我建议通过木偶,厨师等不同的东西来做这件事,或者可以通过家庭brewn scipts / tools。脚本可以通过Jenkins运行而没有问题(应该不是问题)。部署本身不应该是应该单独制作的建筑物的一部分。如果您正在编写自己的工具,可以查看Aether library以便更轻松地访问Maven存储库。

答案 1 :(得分:5)

在组织方面,您正在混合构建和部署,复制......

当jenkins是一个集成工具时,maven是一个用于构建存档的工具。

你应该:

  • 在编译和集成之间保持清晰的边界
  • 使用这些工具进行设计。

HIH 微米。