一尘不染

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

spring-boot

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

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

Jenkins作业有一个后构建动作:mvn spring-boot:run,问题是该后构建动作完成时该作业挂起。

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


阅读 261

收藏
2020-05-30

共1个答案

一尘不染

问题是Jenkins 不能很好地处理生成的子进程。@Steve在注释中建议的解决方法(nohup)并没有改变我的情况,但是一个简单的解决方法是使用unix命令
安排 应用程序的启动at

> echo "mvn spring-boot:run" | at now + 1 minutes

这样,詹金斯就可以成功完成工作而不会超时。


如果最终.jar通过覆盖文件.jarjava -jar app.jar导致Boot中断而从文件运行应用程序,需要确保在复制工件之前应用程序已停止。如果正在使用ApplicationPidListener,则可以通过添加以下命令的执行来验证应用程序是否正在运行(如果正在运行,则将其停止):

> test -f application.pid && xargs kill < application.pid || echo 'App was not running, nothing to stop'
2020-05-30