最近在鼓捣 jenkins 的时候,遇到了很多问题,这个问题搞的好难受,就是我写的项目启动脚本,在服务器本地可以执行,但是在jenkins上构建后执行,项目就启动不起来。
搞得我要裂开了,后来站在巨人的肩膀上,终于找到了解决方案!!!
问题发生的前提:你的 jenkins 所在的服务器和 你部署项目的服务器是同一台(我自己鼓捣所以就用了同一台,咱 们项目开发的时候,都是服务器分开的),所以咱们很少遇到这个问题。
正如题目写的,就是 jenkins 在构建结束之后,会杀死它创建的子进程,所以你写的后台执行的脚本也会被kill掉。
方案一:
# 在执行的脚本前边加入:不要杀死我 ~
export BUILD_ID=dontKillMe
# 要执行的脚本命令
nohup java -jar veryGoodItem.jar > logTest.log 2>&1 &
# 临时改变BUILD_ID值,使得Jenkins不会找到并结束掉run.sh启动的后台进程
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
# 要执行的脚本命令
nohup java -jar veryGoodItem.jar > logTest.log 2>&1 &
# 改回原来的BUILD_ID值
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID
最后和大家说俩句:遇到问题的时候,不能想当然,觉得不是那个问题,还是要多尝试,说不定你就成功了。毕竟行动见真知,奥里给!!!
凉快-Eric 原创文章 232获赞 314访问量 12万+ 关注 他的留言板 展开阅读全文