成功部署后无法进行CICD管道部署阶段

时间:2019-07-04 16:30:01

标签: jenkins jenkins-pipeline devops jenkins-groovy

背景:使用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构建中退出(干净退出)。

1 个答案:

答案 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"
}