Java 在测试和产品环境中使用Maven和Jenkins部署到tomcat
我正在为我的应用程序编写构建脚本,我想知道部署/发布到测试/产品环境的最佳实践是什么 目前我写的是Java 在测试和产品环境中使用Maven和Jenkins部署到tomcat,java,tomcat,maven,deployment,jenkins,Java,Tomcat,Maven,Deployment,Jenkins,我正在为我的应用程序编写构建脚本,我想知道部署/发布到测试/产品环境的最佳实践是什么 目前我写的是 使用ssh停止tomcat服务器 使用Maven构建战争 使用ssh从tomcat webapps目录中删除war 使用ssh将构建的文件传输到tomcat上的webapps目录 启动服务器 我知道这不是部署应用程序的最佳方式,希望得到您的反馈。理想情况下,我想做的是 为prod env执行maven发布。如果可能的话,最多为修订号 标记代码 将发布的战争上传到S3文件夹,其中包含所有战争及其历史
我不知道第4步是在Jenkins中还是在服务器上。我使用EC2实例来托管web应用程序,因此我的映像需要脚本。首先,您要混合构建和部署。我建议通过Maven进行建筑。部署是另一回事 我的意思是通过Maven release plugin生成发布的工件,因为您将工件交付给测试和/或产品,这些工件必须是可复制的 这些是在您的存储库管理器(Artifactory、Archiva、Nexus)中拥有工件之后生成工件的东西,下一步是将它们部署到适当的区域,如测试或生产。这可以通过Maven或其他插件实现。
但我建议通过不同的方式,如木偶、厨师等,或者通过自制的啤酒科学/工具来实现这一点。脚本可以通过Jenkins运行,没有问题(应该没有问题)。部署本身不应该是建筑的一部分,而应该单独进行。如果您正在编写自己的工具,您可以看看如何简化对Maven存储库的访问。就组织而言,您正在混合构建和部署、复制
- 应该使用jenkins来检查源代码。有各种插件可以从scm中签出某个版本(即使默认情况下CI总是针对最新版本运行):
- maven应该用于预处理、过滤资源、编译和打包war
- jenkins的后期处理任务可用于复制/归档生成的war
- jenkins插件(例如基于cargo)可用于部署归档
- 在编译和集成之间保持清晰的边界
- 将这些工具用于它们的设计