zoukankan      html  css  js  c++  java
  • Cash Loan----:利用脚本自动化部署系统,解放我们的双手

    【前言】

           现在我们的项目发布(从git上拉代码部署到Linux上)是通过脚本来完成,生产和测试环境都是运维在控制,开发联调环境由开发来负责,之前开发环境每次部署都是先在本地打好jar包然后传到服务器上;

           每次发布都打包上传,非常的麻烦;于是自己仿照测试环境的脚本改造一下在开发环境下也可以自动部署。

    【自动化脚本】

           一、基本环境(基本环境东西若没有自行百度)

                 1、Linux操作系统:CentOS 6.8

                 2、JDK版本:1.8.0_144

                 3、Maven版本:3.5.2

                 4、Git版本:1.7.1

           二、相应脚本

                 1、拉代码脚本

    1. #进入到git目录
    2. cd /data/git/
    3. #删除目录
    4. rm -rf demo
    5. #从git上拉代码
    6. git clone http://root:zhanghanPass@gitlab.demo.com/demo-group/demo.git
    7. #进入到代码目录
    8. cd demo
    9. #切换到dev分支
    10. git checkout dev
    11. #进入到父目录
    12. cd /data/git/demo/demo-parent
    13. #利用maven命令进行打包
    14. mvn clean package -P test -Dmaven.test.skip=true
    15. #复制配置文件
    16. cp -r /data/git/demo/env/demo-test /data/work/demo
    17. #停止正在运行的程序---其中stop.sh见文章下面
    18. sh /data/work/demo/stop.sh && echo && sleep 8
    19. #将打好的jar包拷贝到工作目录下
    20. mv /data/git/demo/target/demo.jar /data/work/demo
    21. #启动新的程序---其中start.sh见文章下面
    22. sh /data/work/demo/start.sh

                 2、启动脚本(start.sh)

    1. #!/bin/sh
    2. source /etc/profile
    3. PRG="$0"
    4. while [ -h "$PRG" ]; do
    5. ls=`ls -ld "$PRG"`
    6. link=`expr "$ls" : '.*-> (.*)$'`
    7. if expr "$link" : '/.*' > /dev/null; then
    8. PRG="$link"
    9. else
    10. PRG=`dirname "$PRG"`/"$link"
    11. fi
    12. done
    13. # Get standard environment variables
    14. PRGDIR=`dirname "$PRG"`
    15. [ -z "$DEMO_HOME" ] && DEMO_HOME=`cd "$PRGDIR" >/dev/null; pwd`
    16. [ -z "$DEMO_PID" ] && DEMO_PID=$DEMO_HOME/pid
    17. FILE_LIST=`ls ${DEMO_HOME}`
    18. JAR_FILE=""
    19. LOG_FILE=""
    20. for FILE in $FILE_LIST
    21. do
    22. if [ "${FILE##*.}" = "jar" ]; then
    23. JAR_FILE="${DEMO_HOME}/${FILE}"
    24. LOG_FILE="${FILE%.*}.log"
    25. fi
    26. done
    27. if [ -z $JAR_FILE ]; then
    28. echo "Error : no jar file in $DEMO_HOME"
    29. exit
    30. fi
    31. if [ -f "$DEMO_PID" ]; then
    32. PID=`cat $DEMO_PID`
    33. rm -rf $DEMO_PID
    34. kill -9 $PID
    35. fi
    36. nohup java $DEBUG -jar -Xmx256m -Dfile.encoding=UTF-8 -Dspring.config.location=/data/work/demo/ ${JAR_FILE} >>$DEMO_HOME/${LOG_FILE} 2>&1 &
    37. PID=$!
    38. echo $PID > ${DEMO_PID}
    39. if [ ! -f $DEMO_HOME/${LOG_FILE} ]; then
    40. echo "begin....." >>$DEMO_HOME/${LOG_FILE}
    41. fi

                 3、停止脚本(stop.sh)

    1. #!/bin/sh
    2. PRG="$0"
    3. while [ -h "$PRG" ]; do
    4. ls=`ls -ld "$PRG"`
    5. link=`expr "$ls" : '.*-> (.*)$'`
    6. if expr "$link" : '/.*' > /dev/null; then
    7. PRG="$link"
    8. else
    9. PRG=`dirname "$PRG"`/"$link"
    10. fi
    11. done
    12. # Get standard environment variables
    13. PRGDIR=`dirname "$PRG"`
    14. [ -z "$DEMO_HOME" ] && DEMO_HOME=`cd "$PRGDIR" >/dev/null; pwd`
    15. [ -z "$DEMO_PID" ] && DEMO_PID=$DEMO_HOME/pid
    16. if [ ! -f "$DEMO_PID" ]; then
    17. echo 'no pid file found.'
    18. else
    19. PID=`cat $DEMO_PID`
    20. echo "kill process $PID"
    21. rm -rf $DEMO_PID
    22. kill $PID
    23. fi

           三、查看Springboot的具体启动时间

               1、说明:最近在排查一个线上数据问题,需要定位到上上次发版的具体时间,发现一个命令可以看出Springboot的具体启动时间;

                 2、详细步骤

                   (1)进入日志目录

                  cd /data/work/opt/logs/demo-log

                   (2)查看启动时间

                  cat demo.log | grep running

                   (3)效果图


    【总结】

            机器能做的事情教给机器做,可以把省下的时间去做更具有创造性和挑战性的事情。

    原文地址:https://blog.csdn.net/zhanghan18333611647/article/details/80719215
  • 相关阅读:
    php数据库操作命令精华大全
    使用phpnow本地搭建Discuz!如何实现伪静态
    最基础的PHP分类查询程序
    p​h​p​面​试​题​笔​试​题​ ​比较有用
    kolla单节点部署openstack
    Qt 编译方式之 qbs
    Qt画图
    Qt拖拽事件
    POSTMAN学习和使用体会
    HandlerExceptionResolver的使用,返回前端相对友好的异常信息
  • 原文地址:https://www.cnblogs.com/jpfss/p/10146539.html
Copyright © 2011-2022 走看看