我有一个运行在嵌入式Tomcat Servlet容器上的Spring Boot应用程序mvn spring- boot:run。而且我不想将项目作为单独的战争部署到独立的Tomcat。
mvn spring- boot:run
每当我将代码推送到BitBucket / Github时,钩子就会运行并触发Jenkins作业(在Amazon EC2上运行)来部署应用程序。
Jenkins作业有一个后构建动作:mvn spring-boot:run,问题是该后构建动作完成时该作业挂起。
mvn spring-boot:run
应该有另一种方法可以做到这一点。任何帮助,将不胜感激。
问题是Jenkins 不能很好地处理生成的子进程。@Steve在注释中建议的解决方法(nohup)并没有改变我的情况,但是一个简单的解决方法是使用unix命令 安排 应用程序的启动at:
nohup
at
> echo "mvn spring-boot:run" | at now + 1 minutes
这样,詹金斯就可以成功完成工作而不会超时。
如果最终.jar通过覆盖文件.jarjava -jar app.jar导致Boot中断而从文件运行应用程序,则需要确保在复制工件之前应用程序已停止。如果正在使用ApplicationPidListener,则可以通过添加以下命令的执行来验证应用程序是否正在运行(如果正在运行,则将其停止):
.jar
java -jar app.jar
ApplicationPidListener
> test -f application.pid && xargs kill < application.pid || echo 'App was not running, nothing to stop'