美文网首页
自动部署jar脚本(自动pull代码、自动编译jar、自动重启j

自动部署jar脚本(自动pull代码、自动编译jar、自动重启j

作者: luckXiaofei | 来源:发表于2023-06-07 15:05 被阅读0次

    sh脚本

    #!/bin/bash
    source /etc/profile
    
    #脚本所在目录
    SERVICE_DIR=$(cd $(dirname $0); pwd)
    #代码所在目录
    CODE_PATH=$SERVICE_DIR/code
    
    echo "开始拉取最新代码  代码目录:$CODE_PATH"
    cd $CODE_PATH
    git checkout develop
    git pull
    echo "开始编译"
    mvn clean install -Dmaven.test.skip=true
    #maven编译后,jar包集合
    JAR_DIR_ARRAY=($(find . -name *.jar))
    
    for ((i=0; i<${#JAR_DIR_ARRAY[@]};i++)); do
        echo  序号$i :${JAR_DIR_ARRAY[i]}
    done
    #选择的jar包下标
    jar_index="$1";
    #执行脚本前已经选了,就不再选,没选就在脚本执行中的时候 选择下jar包的下标
    if [ ! -n "$jar_index" ]; then
          read -p "请输入需要重启的jar 序号:" jar_index
          echo "选择的下标为 $jar_index"
    else
          echo "选择的下标为 $jar_index"
    fi
    
    #jar的文件路径
    JAR_DIR=${JAR_DIR_ARRAY[$jar_index]}
    #jar的名称 举例:xxxx.jar
    JAR_NAME=${JAR_DIR##*/}
    #服务的名称 举例:xxxx
    SERVICE_NAME=${JAR_NAME%%.*}
    
    echo "开始备份jar"
    NOW=`date +%Y%m%d%H%M`
    cp -r $SERVICE_DIR/$JAR_NAME $SERVICE_DIR/$SERVICE_NAME$NOW.jar
    
    echo "开始复制jar,从 $JAR_DIR 目录到 $SERVICE_DIR 目录"
    cp -r $JAR_DIR $SERVICE_DIR/
    
    echo "即将重启, $JAR_NAME"
    cd $SERVICE_DIR
    mkdir -p $SERVICE_DIR/../logs/$SERVICE_NAME
    LOG_PATH=$SERVICE_DIR/../logs/$SERVICE_NAME/start.log
    
    
    
    restart(){
            echo "------------------------ ${JAR_NAME} 开始启动 ------------------------"
    
            pid=`ps -ef | grep ${JAR_NAME} | grep -v grep | 
    awk '{print $2}'`
            if [ -n "$pid" ]; then
                    echo $pid Manager
                    kill -9 $pid
                    if [ "$?" -eq 0 ]; then
                            echo "kill success"
                    else
                            echo "kill failed"
                    fi
            fi
            nohup java  -jar  ${JAR_NAME}   --spring.profiles.active=test --server.port=10098   >> $LOG_PATH 2>&1 &
    
            echo "------------------------ ${JAR_NAME} 开始完成 ------------------------"
            echo "------------------------ 查看日志请执行:tail -f $LOG_PATH ------------------------"
            tail -f $LOG_PATH
    }
    restart
    
    

    相关文章

      网友评论

          本文标题:自动部署jar脚本(自动pull代码、自动编译jar、自动重启j

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