美文网首页
Jenkins部署脚本

Jenkins部署脚本

作者: 九千年小妖 | 来源:发表于2021-09-02 12:58 被阅读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
    

    相关文章

      网友评论

          本文标题:Jenkins部署脚本

          本文链接:https://www.haomeiwen.com/subject/lhdqkltx.html