背景:使用cicd管道声明性脚本的Spring Boot应用程序部署
问题:
spring boot应用程序的jar文件能够成功启动。一段时间后,我们也可以从浏览器访问应用程序运行状况信息,但是构建作业无法从部署阶段退出。它在此阶段持续旋转。
已采取的措施:即使我们在启动命令中添加了timeout=120000
,但行为没有改变。
帮助:请帮助我们,在部署阶段结束后如何从jenkin cicd声明性管道中彻底退出。
我们正在ssh's并执行启动命令。代码如下:
sshagent([sshAgent]) { sh "scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -v *.jar sudouser@${server}:/opt/project/tmp/application-demo.jar" sh "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null sudouser@${server} nohup '/opt/java/hotspot/8/64_bit/jdk1.8.0_141/bin/java -jar -Dspring.profiles.active=$profile -Dhttpport=8890 - /opt/project/tmp/application-demo.jar ' timeout=120000" }
在部署阶段成功之后,我需要从jenkins构建中退出(干净退出)。
答案 0 :(得分:0)
您需要将'&'添加到backgroud中的启动过程中 示例:
nohup '/opt/java/hotspot/8/64_bit/jdk1.8.0_141/bin/java -jar -Dspring.profiles.active = $ profile -Dhttpport = 8890 - /opt/project/tmp/application-demo.jar &
您还可以在日志显示为“开始于”以退出执行时设置'if'条件。 示例:
status(){
timeout=$1
process=$2
log=$3
string=$4
if (timeout ${timeout} tail -f ${log} &) | grep "${string}" ; then
echo "${process} started with success."
else
echo "${process} startup failed." 1>&2
exit 1
fi
}
start_app(){
java -jar -dspring.profiles.active=$profile -dhttpport=8890 - /opt/project/tmp/application-demo.jar >> /tmp/log.log 2>&1 &
status "60" "application-demo" "/tmp/log.log" "started"
}