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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章