Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 在多模块spring boot微服务项目中使用Jenkins管道部署单个微服务_Maven_Spring Boot_Jenkins Pipeline_Microservices_Multi Module - Fatal编程技术网

Maven 在多模块spring boot微服务项目中使用Jenkins管道部署单个微服务

Maven 在多模块spring boot微服务项目中使用Jenkins管道部署单个微服务,maven,spring-boot,jenkins-pipeline,microservices,multi-module,Maven,Spring Boot,Jenkins Pipeline,Microservices,Multi Module,我有一个microservices项目,即结构为带有springboot的多模块maven项目,例如 微服务模块-1 微服务模块2 具有父pom的父模块 所有微服务都打包在一个scm存储库中。我想使用Jenkins管道为我的微服务设置CI CD管道。如果在存储库中的微服务模块-1中进行了一些更改,那么我想部署该特定的微服务或模块,webhook将通知jenkins父repo下的任何更改,但打包后我只想部署受影响的微服务。原因如下: 再次部署所有微服务将花费大量的构建和部署时间 此外,许多测

我有一个microservices项目,即结构为带有springboot的多模块maven项目,例如

  • 微服务模块-1
  • 微服务模块2
  • 具有父pom的父模块
所有微服务都打包在一个scm存储库中。我想使用Jenkins管道为我的微服务设置CI CD管道。如果在存储库中的微服务模块-1中进行了一些更改,那么我想部署该特定的微服务或模块,webhook将通知jenkins父repo下的任何更改,但打包后我只想部署受影响的微服务。原因如下:

  • 再次部署所有微服务将花费大量的构建和部署时间
  • 此外,许多测试阶段会增加更多的时间

因此,在Jenkins的持续交付管道中,当webhook触发时,我只想部署已更改的服务。Maven增量插件可能会达到这个目的,但我想知道在作为Maven MultimultiModule projectd打包的微服务的上下文中。请告诉我如何实现这一点,或者如果不应遵循这一方法,请在此背景下提出最佳方法

为什么不为每个微服务使用单独的存储库?这将允许您完全依靠提交来确定这些“模块”中的某个模块是否发生了更改。它还允许您分离管道,以便每次运行只需部署一个工件。@g00glen00b我们正在考虑为每个微服务使用单独的存储库。但我在网上看到了很多例子,比如像maven multi-module project那样打包的微服务,它们是如何进行连续部署的。同样在将来,当我的项目变得越来越大时,管理所有存储库及其管道工作将变得很困难。@g00glen00b我还认为,在大型项目中,为每个小型或大型微服务维护多个存储库并不容易,也会增加不必要的总成本。嗯,这是离题的/固执己见的,但微服务最终通常由不同的人开发和管理,因此拥有一个大型回购往往会增加复杂性(无理由合并),而不是简化它。成本也是相对的,因为您还不知道以您想要的方式部署多模块Maven项目需要多少成本。@g00glen00b感谢您的宝贵建议,我同意您的观点。但以防万一,如果我继续使用多模块结构。您能否提供一些方法来实现连续交付,这样我就不会部署存储库中未受影响的所有微服务。我需要识别已更改的特定工件,并仅部署该工件。每个子模块都是一个spring boot项目。为什么不为每个微服务使用单独的存储库呢?这将允许您完全依靠提交来确定这些“模块”中的某个模块是否发生了更改。它还允许您分离管道,以便每次运行只需部署一个工件。@g00glen00b我们正在考虑为每个微服务使用单独的存储库。但我在网上看到了很多例子,比如像maven multi-module project那样打包的微服务,它们是如何进行连续部署的。同样在将来,当我的项目变得越来越大时,管理所有存储库及其管道工作将变得很困难。@g00glen00b我还认为,在大型项目中,为每个小型或大型微服务维护多个存储库并不容易,也会增加不必要的总成本。嗯,这是离题的/固执己见的,但微服务最终通常由不同的人开发和管理,因此拥有一个大型回购往往会增加复杂性(无理由合并),而不是简化它。成本也是相对的,因为您还不知道以您想要的方式部署多模块Maven项目需要多少成本。@g00glen00b感谢您的宝贵建议,我同意您的观点。但以防万一,如果我继续使用多模块结构。您能否提供一些方法来实现连续交付,这样我就不会部署存储库中未受影响的所有微服务。我需要识别已更改的特定工件,并仅部署该工件。每个子模块都是一个spring boot项目。