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
上一篇下一篇

猜你喜欢

热点阅读