Jenkins win10远程部署到linux服务器,执行shell后项目不启动/无效

Jenkins是在win10用jar -jar方式启动的

在服务器直接运行jar包或者运行shell脚本没问题,可以跑起来,也能访问。用jenkins部署就不行,不管任何办法都不能跑起来

各项部署都没问题,项目也打包发送到了服务器,但是项目就是启动不成功。

网上的说法是Jenkins在build以后默认把子进程给杀死了,所以在执行了shell启动项目脚本之前加入

export BUILD_ID=dontkillme   这一行,必须加。如果是tomcat跑的Jenkins,就要修改tomcat里面cataline.sh的配置

当我加了 BUILD_ID=dontKillMe这个还是不行。我是java -jar运行的jenkins。还试了其他很多办法,都不行。

各种办法都试了,还是不行,先留着,后期研究

 

忙完了其他事情,这个问题继续来,一直困扰,虽然工作中没有遇到,在自己服务器机器上面遇到了,不解决心里面不舒服

按照网上的解决方式:

先是看了Jenkin官方的解释,也就是以下几种方式

1、脚本加上export BUILD_ID=dontkillme 无效

2、启动Jenkins的时候加上-Dhudson.util.ProcessTree.disable=true参数  无效 

3、把jenkins放在tomcat里面跑,修改tomcat的cataline.sh文件的参数  脚本开始前加上JAVA_OPTS="$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true";Windows系统修改catalina.bat,在环境变量的说明后,脚本开始前加上set JAVA_OPTS=%JAVA_OPTS% "-Dhudson.util.ProcessTree.disable=true";    无效

4、安装daemonize防止被进程被杀,脚本最后一行执行命令 daemonize -E BUILD_ID=dontKillMe  nohup java -jar /usr/local/miniprogram/miniprogram.jar &   无效

5、按照官方进行配置BUILD_ID,启动-Dhudson.util.ProcessTree.disable=true参数等  无效

 

到此为止,本人已经崩溃,生活已不能自理,网上的解决都是这里拷贝那里,全是复制大神们

问了群里面一个曾经在阿里工作的大神,让我在shell脚本最上方加上source /etc/profile,感觉又有了一线生机。

然后试了一下,居然可以了,详情看下图

Jenkins win10远程部署到linux服务器,执行shell后项目不启动/无效

当看到SpringBoot启动的时候,我就知道基本上已经成事了。问题解决

最终的miniprogram.sh:

source /etc/profile
#!/bin/bash
echo "Restarting SpringBoot miniprogram  Application"
pid=`ps -ef | grep miniprogram.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
   echo "closed process"$pid
fi
echo "grant auth to miniprogram.jar"
chmod 777 /usr/local/miniprogram/miniprogram.jar
echo "execute startup commands"
#java -jar /usr/local/miniprogram/miniprogram.jar
nohup java -jar /usr/local/miniprogram/miniprogram.jar &

原来在一台服务器远程链接另一台服务器的时候,即便是存在BUILD_ID=dontKillMe,必须使用source /etc/profile,使其在B终端内有效,不然默认还是A终端,导致无法正常启动。我也没有加什么BUILD_ID=dontKillme