Jenkins部署脚本
2021-09-02 本文已影响0人
九千年小妖
image.png
export BUILD_ID=dontKillMe
echo "进入项目文件"
#服务名称
SERVER_NAME=wisdom-tcm-module-system-2.2.0
# 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行
#JAR_NAME=springboot-0.0.1-SNAPSHOT
JAR_NAME=wisdom-tcm-module-system-2.2.0
# 源jar路径
JAR_PATH=/data2/jenkinswork/workspace/szhy/wisdom-tcm-admin/wisdom-tcm/wisdom-tcm-module-system/target
# 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建
JAR_WORK_PATH=/data2/workspace/wisdom_tcm/server/admin-server
BAK_PATH=/data2/jenkinswork/bak/workspace/$SERVER_NAME
case $Status in
Deploy)
cd /data2/jenkinswork/workspace/szhy/wisdom-tcm-admin/wisdom-tcm
echo "开始构建"
mvn clean install
echo "Status:$Status"
echo "#创建每次要备份的目录:${WORKSPACE}"
path="${BAK_PATH}/bak/${BUILD_NUMBER}" #创建每次要备份的目录
if [ -d $path ];
then
echo "The files is already exists "
else
mkdir -p $path
fi
cp -r $JAR_PATH/$JAR_NAME.jar $path #将打包好的war包备份到相应目录,覆盖已存在的目标
ReservedNum=3 #保留文件数
FileDir=${BAK_PATH}/bak/
date=$(date "+%Y%m%d-%H%M%S")
cd $FileDir #进入备份目录
FileNum=$(ls -l | grep '^d' | wc -l) #当前有几个文件夹,即几个备份
while(( $FileNum > $ReservedNum))
do
OldFile=$(ls -rt | head -1) #获取最旧的那个备份文件夹
echo $date "Delete File:"$OldFile
rm -rf $FileDir/$OldFile
let "FileNum--"
done
echo "Completing!"
;;
Rollback)
echo "Status:$Status"
echo "Version:$Version"
cd ${BAK_PATH}/bak/$Version #进入备份目录
cp -r ${BAK_PATH}/bak/$Version/. $JAR_PATH #将备份拷贝到程序打包目录中,并覆盖之前的war包
;;
*)
esac
echo "查询进程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "得到进程ID:$PID"
echo "开始结束进程"
for id in $PID
do
kill -9 $id
echo "killed $id"
done
echo "结束进程完成"
#复制jar包到执行目录
echo "复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "复制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar
echo "启动服务"
#nohup java -jar $JAR_NAME.jar >> `date +%Y-%m-%d`.out 2>&1 &
nohup java -jar $JAR_NAME.jar > $JAR_NAME.log &
#nohup java -jar $JAR_NAME.jar >> `date +%Y-%m-%d`.out 2>&1 &
#检测次数
Test=20
#循环检测
port=`lsof -i:9005 | wc -l`
#while ( [ "$a" = "a" ] || [ "$a" = "b" ] )
while ( [ "$port" -eq "0" ] && [ "$Test" -ne "0" ] )
do
echo "检测服务运行状态"
if [ "$port" -eq "0" ]
then
Test=$((Test-1))
echo "服务运行启动失败,重新检测剩余:$Test"
sleep 3
port=`lsof -i:9005 | wc -l`
else
Test=0
echo "启动服务:进程$SERVER_NAME:$PID"
fi
sleep 3
done
if [ "$port" -eq "0" ]
then
echo "服务运行启动失败"
else
echo "启动服务:$SERVER_NAME,进程:$PID"
fi