1. 程式人生 > >tomcat+svn+shell進行全環境適配部署打包

tomcat+svn+shell進行全環境適配部署打包

     之前寫了個tomcat全自動打包並自動部署指令碼 https://blog.csdn.net/wuchunlin_it/article/details/84837168,該指令碼實現針對某一環境進行自動打包部署,但好景不長,開發和測試環境打包的目錄環境變了,要麼重寫,要麼修改指令碼,而且還新增了其他環境  ⊙﹏⊙‖∣。

    為了不再重寫指令碼或者修改,思慮了3分鐘,為了能夠每天多玩幾把lol,想到了用選單方式,選擇打包的路徑和部署到某一個tomcat下,實現全環境適配,若後續有新環境,直接網腳本里面新增就可以了(複製貼上其他環境,然後改改路徑和埠就可以了)

    廢話不多說,昨天改指令碼已經寫完(未優化,暫時沒那個精力),並且測試了開發和測試環境,沒出啥問題,就把指令碼發出來,求大神們提提意見

#!/bin/bash
#######General deployment#######
cat <<EOF
svn的打包路徑
  (a)@{svn_dir}/java/branches/hg-api
  (b)@{svn_dir}/java/branches/hg-ops
  (c)@{svn_dir}/java/tags/hg-api-1.1.0
  (d)@{svn_dir}/java/tags/hg-ops-1.1.0
EOF
read -p "根據提示,選擇打包的路徑:" input
if [[ $input =~ [a-d] ]]; then
    case $input in
    a)
        cd /home/svn_client/java/branches/hg-api
            cat <<EOF
            (a)打開發環境的包(dev)
            (b)打測試環境的包(test)
            (c)打tag環境的包(tag-patch)
EOF
        read -p "根據提示,請輸入你需要打成什麼環境的包: " input
                if [[ $input =~ [a-c] ]]; then
                    case $input in
                    a)
                        svn update
                        mvn clean package -Pdev
                        if [[ $? -eq 0  ]]; then
                            mv ./target/*.war /data/deployment_war
                            echo "打包成功,且將包移動到/data/deployment_war"
                        else
                            echo "打包失敗"
                            exit 2
                        fi
                    ;;
                                        b)
                                                svn update
                                                mvn clean package -Ptest
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        c)
                                                svn update
                                                mvn clean package -Ptag-patch
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                    esac
                else
                    echo "輸入失敗,請重新選擇"
                    exit 2
                fi
    ;;
        b)
                cd /home/svn_client/java/branches/hg-ops
                        cat <<EOF
                        (a)打開發環境的包(dev)
                        (b)打測試環境的包(test)
                        (c)打tag環境的包(tag-patch)
EOF
                read -p "根據提示,請輸入你需要打成什麼環境的包: " input
                                if [[ $input =~ [a-c] ]]; then
                                        case $input in
                                        a)
                                                svn update
                                                mvn clean package -Pdev
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        b)
                                                svn update
                                                mvn clean package -Ptest
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        c)
                                                svn update
                                                mvn clean package -Ptag-patch
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        esac
                                else
                                        echo "輸入失敗,請重新選擇"
                                        exit 2
                                fi
        ;;
        c)
                cd /home/svn_client/java/tags/hg-api-1.1.0
                        cat <<EOF
                        (a)打開發環境的包(dev)
                        (b)打測試環境的包(test)
                        (c)打tag環境的包(tag-patch)
EOF
                read -p "根據提示,請輸入你需要打成什麼環境的包: " input
                                if [[ $input =~ [a-c] ]]; then
                                        case $input in
                                        a)
                                                svn update
                                                mvn clean package -Pdev
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        b)
                                                svn update
                                                mvn clean package -Ptest
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        c)
                                                svn update
                                                mvn clean package -Ptag-patch
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        esac
                                else
                                        echo "輸入失敗,請重新選擇"
                                        exit 2
                                fi
        ;;
        d)
                cd /home/svn_client/java/tags/hg-ops-1.1.0
                        cat <<EOF
                        (a)打開發環境的包(dev)
                        (b)打測試環境的包(test)
                        (c)打tag環境的包(tag-patch)
EOF
                read -p "根據提示,請輸入你需要打成什麼環境的包: " input
                                if [[ $input =~ [a-c] ]]; then
                                        case $input in
                                        a)
                                                svn update
                                                mvn clean package -Pdev
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        b)
                                                svn update
                                                mvn clean package -Ptest
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        c)
                                                svn update
                                                mvn clean package -Ptag-patch
                                                if [[ $? -eq 0  ]]; then
                                                        mv ./target/*.war /data/deployment_war
                                                        echo "打包成功,且將包移動到/data/deployment_war"
                                                else
                                                        echo "打包失敗"
                                                        exit 2
                                                fi
                                        ;;
                                        esac
                                else
                                        echo "輸入失敗,請重新選擇"
                                        exit 2
                                fi
        ;;
    esac
else
    echo "輸入失敗,請重新選擇"
    exit 2
fi
echo "接下來請選擇需要部署到tomcat的環境"
sleep 2
cat <<EOF
請選擇需要部署的tomcat
  (a)tomcat8081dev       [dev   8081  api]
  (b)tomcat8082test      [test  8082  api]
  (c)tomcat8083pre       [pre   8083  api]
  (d)tomcat8084dev-ops   [dev   8084  ops]
  (e)tomcat8085test-ops  [test  8085  ops]
  (f)tomcat8087tags      [tag   8087  api+ops]
EOF
read -p "根據提示,選擇需要部署的tomcat:" input
if [[ $input =~ [a-f] ]]; then
    case $input in
    a)
        PROCESS1=`netstat -tunlp|grep 8081|awk -F '[ /]+' '{print $7}'`
        PORT1=`netstat -tunlp|grep 8081`
        if [[ $? -eq 0  ]]; then
            echo "服務啟動中,程序為$PROCESS1"
            kill -9 $PROCESS1
            echo "以為你殺掉程序$PROCESS1"
        else
            echo "服務未啟動,無需重複停止"
        fi
        sleep 1
        rm -rf /data/tomcat8081dev/webapps/*
        rm -rf /data/tomcat8081dev/work/Catalina/*
        echo "清除快取完畢"
        sleep 1
        mv /data/deployment_war/hg-api.war /data/tomcat8081dev/webapps/
                if [[ $? -eq 0  ]]; then
                        echo "war包更新成功"
                else
                        echo "war包更新失敗"
            exit 2
                fi
        sleep 1
        /data/tomcat8081dev/bin/startup.sh
        sleep 1
        echo "服務啟動中,請輸入work-menu命令檢視後臺日誌"
    ;;
        b)
                PROCESS2=`netstat -tunlp|grep 8082|awk -F '[ /]+' '{print $7}'`
                PORT2=`netstat -tunlp|grep 8082`
                if [[ $? -eq 0  ]]; then
                        echo "服務啟動中,程序為$PROCESS2"
                        kill -9 $PROCESS2
                        echo "以為你殺掉程序$PROCESS2"
                else
                        echo "服務未啟動,無需重複停止"
                fi
                sleep 1
                rm -rf /data/tomcat8082test/webapps/*
                rm -rf /data/tomcat8082test/work/Catalina/*
                echo "清除快取完畢"
                sleep 1
                mv /data/deployment_war/hg-api.war /data/tomcat8082test/webapps/
                if [[ $? -eq 0  ]]; then
                        echo "war包更新成功"
                else
                        echo "war包更新失敗"
                        exit 2
                fi
                sleep 1
                /data/tomcat8082test/bin/startup.sh
                sleep 1
                echo "服務啟動中,請輸入work-menu命令檢視後臺日誌"
        ;;
        c)
                PROCESS3=`netstat -tunlp|grep 8083|awk -F '[ /]+' '{print $7}'`
                PORT3=`netstat -tunlp|grep 8083`
                if [[ $? -eq 0  ]]; then
                        echo "服務啟動中,程序為$PROCESS3"
                        kill -9 $PROCESS3
                        echo "以為你殺掉程序$PROCESS3"
                else
                        echo "服務未啟動,無需重複停止"
                fi
                sleep 1

        cat <<EOF
        更新pre的什麼服務
        (a)pre-api
        (b)pre-ops
EOF
        read -p "根據提示,選擇需要部署的tomcat:" input
        if [[ $input =~ [a-b] ]]; then
            case $input in
            a)
                           rm -rf /data/tomcat8083pre/webapps/hg-api*
                rm -rf /data/tomcat8083pre/webapps/hg-ops
                        rm -rf /data/tomcat8083pre/work/Catalina/*
                        echo "清除快取完畢"
                        sleep 1
                        mv /data/deployment_war/hg-api.war /data/tomcat8083pre/webapps/
                        if [[ $? -eq 0  ]]; then
                                echo "war包更新成功"
                        else
                                echo "war包更新失敗"
                                exit 2
                        fi
            ;;
                b)
                                rm -rf /data/tomcat8083pre/webapps/hg-api
                                rm -rf /data/tomcat8083pre/webapps/hg-ops*
                                rm -rf /data/tomcat8083pre/work/Catalina/*
                                echo "清除快取完畢"
                                sleep 1
                                mv /data/deployment_war/hg-ops.war /data/tomcat8083pre/webapps/
                                if [[ $? -eq 0  ]]; then
                                        echo "war包更新成功"
                                else
                                        echo "war包更新失敗"
                                        exit 2
                                fi
                        ;;
            esac
        else
            echo "執行失敗,請重新選擇"
            exit 2
        fi
                sleep 1
                /data/tomcat8083pre/bin/startup.sh
                sleep 1
                echo "服務啟動中,請輸入work-menu命令檢視後臺日誌"
        ;;
        d)
                PROCESS4=`netstat -tunlp|grep 8084|awk -F '[ /]+' '{print $7}'`
                PORT4=`netstat -tunlp|grep 8084`
                if [[ $? -eq 0  ]]; then
                        echo "服務啟動中,程序為$PROCESS4"
                        kill -9 $PROCESS4
                        echo "以為你殺掉程序$PROCESS4"
                else
                        echo "服務未啟動,無需重複停止"
                fi
                sleep 1
                rm -rf /data/tomcat8084dev-ops/webapps/*
                rm -rf /data/tomcat8084dev-ops/work/Catalina/*
                echo "清除快取完畢"
                sleep 1
                mv /data/deployment_war/hg-ops.war /data/tomcat8084dev-ops/webapps/
                if [[ $? -eq 0  ]]; then
                        echo "war包更新成功"
                else
                        echo "war包更新失敗"
                        exit 2
                fi
                sleep 1
                /data/tomcat8084dev-ops/bin/startup.sh
                sleep 1
                echo "服務啟動中,請輸入work-menu命令檢視後臺日誌"
        ;;
        e)
                PROCESS5=`netstat -tunlp|grep 8085|awk -F '[ /]+' '{print $7}'`
                PORT5=`netstat -tunlp|grep 8085`
                if [[ $? -eq 0  ]]; then
                        echo "服務啟動中,程序為$PROCESS5"
                        kill -9 $PROCESS5
                        echo "以為你殺掉程序$PROCESS5"
                else
                        echo "服務未啟動,無需重複停止"
                fi
                sleep 1
                rm -rf /data/tomcat8085test-ops/webapps/*
                rm -rf /data/tomcat8085test-ops/work/Catalina/*
                echo "清除快取完畢"
                sleep 1
                mv /data/deployment_war/hg-ops.war /data/tomcat8085test-ops/webapps/
                if [[ $? -eq 0  ]]; then
                        echo "war包更新成功"
                else
                        echo "war包更新失敗"
                        exit 2
                fi
                sleep 1
                /data/tomcat8085test-ops/bin/startup.sh
                sleep 1
                echo "服務啟動中,請輸入work-menu命令檢視後臺日誌"
        ;;
        f)
                PROCESS6=`netstat -tunlp|grep 8087|awk -F '[ /]+' '{print $7}'`
                PORT6=`netstat -tunlp|grep 8087`
                if [[ $? -eq 0  ]]; then
                        echo "服務啟動中,程序為$PROCESS6"
                        kill -9 $PROCESS6
                        echo "以為你殺掉程序$PROCESS6"
                else
                        echo "服務未啟動,無需重複停止"
                fi
                sleep 1
                rm -rf /data/tomcat8087tags/webapps/*
                rm -rf /data/tomcat8087tags/work/Catalina/*
                echo "清除快取完畢"
                sleep 1
                mv /data/deployment_war/hg-ops.war /data/tomcat8087tags/webapps/
                if [[ $? -eq 0  ]]; then
                        echo "war包更新成功"
                else
                        echo "war包更新失敗"
                        exit 2
                fi
                sleep 1
                /data/tomcat8087tags/bin/startup.sh
                sleep 1
                echo "服務啟動中,請輸入work-menu命令檢視後臺日誌"
        ;;
    esac
else
    echo "執行失敗,請根據提示從新輸入"
    exit 2
fi
 

該指令碼未優化,自己也懶得優化了(目前還有預上線環境和tag環境,正式環境沒有測)