tomcat+svn+shell进行全环境适配部署打包

本文介绍了一个基于Shell的自动化脚本,用于根据用户选择从SVN不同分支打包Java应用,并部署到多个Tomcat环境。脚本实现了交互式选择打包路径和部署目标,简化了多环境适配过程。
摘要由CSDN通过智能技术生成

     之前写了个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环境,正式环境没有测)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值