网站栏目排序,高端大气的网站模板,网站优化软件,mvc5网站开发之六Springboot部署脚本
该脚本可用于jenkins自动执行#xff0c;具有以下功能
适配所有以内嵌tomcat容器springboot项目jar包可根据参数选择环境#xff0c;基于profiles可自动识别并关闭已存在进程第一个参数是指定jar包所在绝对路径(该路径下必须有且仅有一个.jar文件) 第二…Springboot部署脚本
该脚本可用于jenkins自动执行具有以下功能
适配所有以内嵌tomcat容器springboot项目jar包可根据参数选择环境基于profiles可自动识别并关闭已存在进程第一个参数是指定jar包所在绝对路径(该路径下必须有且仅有一个.jar文件) 第二个参数是spring.profiles标识 用法 sh deploy.sh /app/yourdir/ dev #!/bin/bash# 部署Spring Boot应用的Shell脚本# 检查参数是否正确
if [ $# -lt 1 ] || [ $# -gt 2 ]; thenecho 用法: $0 应用目录 [环境名称]exit 1
fiAPP_DIR$1# 检查应用目录是否存在
if [ ! -d $APP_DIR ]; thenecho 错误应用目录不存在$APP_DIRexit 1
fi
# 查找目录中的JAR文件
JAR_FILES($APP_DIR/*.jar)
JAR_COUNT${#JAR_FILES[]}
echo 找到Jar包 $JAR_FILES# 验证JAR文件数量
if [ $JAR_COUNT -eq 0 ]; thenecho 错误在目录 $APP_DIR 中未找到任何JAR文件。exit 1
elif [ $JAR_COUNT -gt 1 ]; thenecho 错误在目录 $APP_DIR 中找到多个JAR文件请确保只有一个。echo 找到的JAR文件printf %s\n ${JAR_FILES[]}exit 1
fiAPP_JAR${JAR_FILES[0]}
APP_NAME$(basename $APP_JAR)
echo 准备执行jar包 $APP_NAME
PROFILE${2:-}
# 函数停止正在运行的应用
stop_application() {echo 正在检查应用是否正在运行...# 使用jps查找包含指定jar包名称的Java进程jps -l | grep $APP_NAME | while read pid appdoecho 正在停止应用 [PID: $pid, APP: $app]kill $pid# 等待最多5秒直到进程终止for i in {1..5}; doif ps -p $pid /dev/null; thensleep 1elsebreakfidone# 如果仍然存在则强制终止if ps -p $pid /dev/null; thenecho 强制终止应用 [PID: $pid]kill -9 $pidfidone
}# 函数启动应用
start_application() {if [ -n $PROFILE ]; thenJAVA_OPTS--spring.profiles.active$PROFILEelseJAVA_OPTSfiecho 准备执行jar包 $APP_JARecho 正在启动应用,当前运行环境为 [$PROFILE]nohup java -jar $APP_JAR $JAVA_OPTS /dev/null 21 echo 应用已启动输出重定向到nohup.out
}# 主执行流程
stop_application
# 等待2秒确保进程完全停止
sleep 2
start_application# 验证启动结果
sleep 10
echo 启动验证:
jps -l | grep $APP_NAME | while read npid napp
doecho 应用启动成功 [PID: $npid,APP: $napp]
done