Jenkins远程部署springboot jar包无效的解决方案

在jenkins构建完springboot(maven)项目后上传jar包至服务器 java -jar xxx.jar &命令无效的原因为在构建完成之后jenkins会杀掉所有构建过程中的所有衍生进程,网上搜了许多解决方案,都无效,比如前面加上BUILD_ID=donkillme,最后只有一种方案有效,即使用daemonize命令强制启动后台进程

首先安装daemonize

http://software.clapper.org/daemonize/

安装完成后启动脚本start.sh中

echo "Restarting SpringBoot Application"
pid=`ps -ef | grep qiandw-warehouse-1.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
   echo "kill processing:"$pid
fi

echo "changemod to 777"
chmod 777 /srv/qiandw_warehouse/xxx-1.0.jar
echo "executing jar....."
java -jar /srv/qiandw_warehouse/xxx-1.0.jar &
echo "completed!"

之后在jenkins项目配置中

Jenkins远程部署springboot jar包无效的解决方案

 附*ar包备份shell脚本 backup.sh

cd /srv/qiandw_warehouse/backup         #先进入备份文件夹
datename=$(date +%Y%m%d%H%M%S)
bcfile=./$datename
jar=../qiandw-warehouse-1.0.jar         #需要备份的*ar包

if [ ! -d "$bcfile" ]; then  
    echo "$bcfile directory not exist,will be created"
    mkdir -p "$bcfile"   #创建与时间相对应的文件
else 
    echo "$bcfile has existed"
fi 

cp -a -R $jar $bcfile