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

NEH*_*MA8 2 java deployment tomcat maven jenkins

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

目前我所写的是

  1. 使用ssh停止tomcat服务器.
  2. 使用Maven建立战争
  3. 使用ssh从tomcat webapps目录中删除战争
  4. 使用ssh将构建的文件传输到tomcat上的webapps目录
  5. 启动服务器

我知道它不是部署应用程序的最佳方式,并希望得到您的反馈.我理想的做法是

  1. 为prod env执行maven发布.如果可能,最多为修订号.
  2. 标记代码.
  3. 将已发布的战争上传到包含所有战争及其历史记录的S3文件夹.
  4. 在将从S3下载文件的服务器/ Jenkins上编写脚本(版本号,如果提供最新的版本)并部署到tomcat.

我很困惑这个步骤4应该是在Jenkins还是在服务器上.我正在使用EC2实例来托管Web应用程序,因此我的图像需要有脚本.

khm*_*ise 5

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

我建议以这种方式更改构建,以便在Jenkins中运行一次或在命令行工件上生成,这些工件可以在测试和生产中部署.

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

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


pou*_*sma 5

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

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

你应该 :

  • 在编译和集成之间保持清晰的边界
  • 使用工具来设计它们.

HIH M.