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项目配置中
附*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