部署springboot项目需要检测端口是否被占用,如被占用,则需要关闭该端口服务后,再重新部署项目,这样可以做到持续化部署。该脚本就是解决这个问题。其中:项目名和端口号在外面输入。
这里面就用到了Jenkins的环境变量($JENKINS_HOME),可以自行设置为工作目录
#springboot的jar包重新部署
#restart-jar.sh
#!/bin/bash
#待部署项目名
project_name=$1
#端口号
port=$2
#jar包路径
jar_path=$JENKINS_HOME/workspace/$project_name/target/$project_name-0.0.1-SNAPSHOT.jar
echo "jar包路径:$jar_path"
#日志地址
log_path=/usr/local/mylog/$project_name.log
echo "检测该项目 $port 端口占用情况。。。"
pid=`lsof -i:$port |awk '{print $2}' | tail -n 2`
if [ -n "$pid" ]
then
echo "发现 $port 端口被占用,正在替换中。。。"
kill -9 $pid
fi
echo "jar包部署中。。。"
# 部署
BUILD_ID=dontKillMe nohup java -jar $jar_path > $log_path &
执行命令:bash restart-jar.sh "项目名" "端口号"
执行结果: