linux自动部署springboot多项目shell脚本(需要先安装git和maven)

执行此脚本前需要安装git和maven,脚本中的项目路径都是绝对路径,需要根据实际的生产环境手动修改

此脚本支持单项目部署和多项目部署

项目步骤:

1.从git上拉取最新代码

2.maven打包

3.kill掉原jar包进程

4.备份原jar包,并复制新jar包到项目路径下

5.启动程序

启动项目

启动单项目命令 sh xxx.sh institution

启动多项目命令 sh xxx.sh all

#项目名称
institution=institution 
task=task
channels=channels
eureka=eureka
message=message
trade=trade
clearing=clearing
finance=finance
permission=permission

#多项目部署参数
files="eureka permission institution finance trade message channels task"

#时间
DATE=$(date +%m%d%H%M)

#命令输入参数
file=${1}


#拉代码 (注意git分支)
cd /usr/local/project/asianwallet && git pull

#打包 (注意打包环境)
cd /usr/local/project/asianwallet/ && mvn clean install -Dmaven.test.skip=true -Ppre

#判断执行哪个jar包
case ${file} in
 "institution")

    echo "------institution start-----"
     demoFun ${file} ${DATE}
    echo "------institution end-----"
 ;;
 "task")
    echo "------task start-----"
     demoFun ${file} ${DATE}
    echo "------task end-----"
 ;;
 "channels")
    echo "------channels start-----"
     demoFun ${file} ${DATE}
    echo "------channels end-----"
 ;;
 "eureka")
    echo "------eureka start-----"
     demoFun ${file} ${DATE}
    echo "------eureka end-----"
 ;;
 "message")
    echo "------message start-----"
     demoFun ${file} ${DATE}
    echo "------message end-----"
 ;;
 "trade")
    echo "------trade start-----"
     demoFun ${file} ${DATE}
    echo "------trade end-----"
 ;;
 "clearing")
    echo "------clearing start-----"
     demoFun ${file} ${DATE}
    echo "------clearing end-----"
 ;;
 "finance")
    echo "------finance start-----"
     demoFun ${file} ${DATE}
    echo "------finance end-----"
 ;;
 "permission")
    echo "------permission start-----"
     demoFun ${file} ${DATE}
    echo "------permission end-----"
 ;;
 "all")
    echo "------ALL start-----"
     demoFunForeach ${files}
    echo "------ALL end-----"
 ;;
esac

demoFun(){
        #kill掉线程
        echo "项目 : ${file}"
        echo "时间 : ${DATE}"
        if [ ${file} = "all" ]; then
          echo "执行demoFunForeach"
        else
          #查看jar包原PID
          procedure=`ps -ef|grep  asianwallet-${file}|grep -w "java"| grep -v "grep"|awk '{print $2}'` 
          echo  "PID : ${procedure}" 
          if [ ${procedure} = "" ]; then
            echo "asianwallet-${file} is stop"
          else
            kill -9 ${procedure}
            sleep 1
          fi
          
          #判断/asianwallet-${file}-1.0.0-SNAPSHOT.jar是否存在,并改名
          if [ -f "/usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar" ];then
                echo "/usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar 存在并备份" 
                mv /usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar /usr/local/asianwallets/asianwallet-${file}-${DATE}-SNAPSHOT.jar
          fi
          sleep 1
                 
          #移动jar包
          echo "拷贝jar包到 /usr/local/asianwallets/"
          cp /usr/local/project/asianwallet/asianwallet-${file}/target/asianwallet-${file}-1.0.0-SNAPSHOT.jar /usr/local/asianwallets/
          #启动程序
          echo "启动程序"

          echo "授予当前用户权限"
          chmod 777 /usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar 
          nohup java -jar /usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar &
        fi
}
demoFun


demoFunForeach(){
        if [ ${file} = "all" ]; then
         for state in ${files}
         do
          DATE=$(date +%m%d%H%M)
          procedure=`ps -ef|grep  asianwallet-${state}|grep -w "java"| grep -v "grep"|awk '{print $2}'` 
          echo  "PID : ${procedure}" 
          echo  "项目 : ${state}"
          if [ ${procedure} = "" ]; then
            echo "asianwallet-${state} 没有进程"
          else
            kill -9 ${procedure}
            sleep 1
          fi
          
          #判断/asianwallet-${state}-1.0.0-SNAPSHOT.jar是否存在,并改名
          if [ -f "/usr/local/asianwallets/asianwallet-${state}-1.0.0-SNAPSHOT.jar" ];then
                echo "/usr/local/asianwallets/asianwallet-${state}-1.0.0-SNAPSHOT.jar 存在并备份" 
                mv /usr/local/asianwallets/asianwallet-${state}-1.0.0-SNAPSHOT.jar /usr/local/asianwallets/asianwallet-${state}-${DATE}-SNAPSHOT.jar
          fi
          sleep 1
                 
          #移动jar包
          echo "拷贝jar包到 /usr/local/asianwallets/"
          cp /usr/local/project/asianwallet/asianwallet-${state}/target/asianwallet-${state}-1.0.0-SNAPSHOT.jar /usr/local/asianwallets/
          #启动程序
          echo "启动程序"
          echo "授予当前用户权限"
          chmod 777 /usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar  
          nohup java -jar /usr/local/asianwallets/asianwallet-${state}-1.0.0-SNAPSHOT.jar &
         done
        fi
}
demoFunForeach

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值