如何使用Jenkins部署SpringBoot Maven应用程序?

azi*_*sal 21 tomcat maven jenkins spring-boot microservices

我有一个Spring Boot应用程序,它运行在嵌入式Tomcat servlet容器上mvn spring-boot:run.而且我不想将项目作为单独的战争部署到独立的Tomcat.

每当我将代码推送到BitBucket/Github时,钩子就会运行并触发Jenkins作业(在Amazon EC2上运行)来部署应用程序.

Jenkins作业有一个后期构建操作:mvn spring-boot:run问题是当构建操作完成后作业挂起.

应该有另一种方法来做到这一点.任何帮助,将不胜感激.

kry*_*ger 19

问题是Jenkins 不能很好地处理构建中的子进程.@Steve在评论(nohuping)中提出的解决方法并未改变我的行为,但一个简单的解决方法是使用unix命令安排应用程序的启动at:

> echo "mvn spring-boot:run" | at now + 1 minutes
Run Code Online (Sandbox Code Playgroud)

这样Jenkins成功地完成了工作,没有超时.


如果您最终在.jar文件中运行应用程序,请java -jar app.jar注意如果.jar文件被覆盖则Boot会中断,您需要确保在复制工件之前停止应用程序.如果您正在使用ApplicationPidListener,则可以通过添加此命令的执行来验证应用程序是否正在运行(如果是,则将其停止):

> test -f application.pid && xargs kill < application.pid || echo 'App was not running, nothing to stop'
Run Code Online (Sandbox Code Playgroud)

  • `echo"mvn spring-boot:run"| 现在`(没有1分钟的延迟)也适用于我的情况. (2认同)

小智 5

我发现将工件首先复制到服务器上的指定区域以跟踪已部署的工件并且不从jenkins作业文件夹启动应用程序非常有用.然后在那里创建一个服务器日志文件并开始在jenkins窗口上监听它,直到服务器启动.

为此,我开发了一个小shell脚本,你可以在这里找到

您还将找到一篇小文章,解释如何在jenkins上配置项目.

如果有效,请告诉我.Thnaks