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、拉代码脚本

#进入到git目录
cd /data/git/

#删除目录
rm -rf demo

#从git上拉代码
git clone http://root:[email protected]/demo-group/demo.git

#进入到代码目录
cd demo

#切换到dev分支
git checkout dev

#进入到父目录
cd /data/git/demo/demo-parent

#利用maven命令进行打包
mvn clean package -P test -Dmaven.test.skip=true

#复制配置文件
cp -r /data/git/demo/env/demo-test /data/work/demo

#停止正在运行的程序---其中stop.sh见文章下面
sh /data/work/demo/stop.sh && echo && sleep 8

#将打好的jar包拷贝到工作目录下
mv /data/git/demo/target/demo.jar  /data/work/demo

#启动新的程序---其中start.sh见文章下面
sh /data/work/demo/start.sh

             2、启动脚本(start.sh)

#!/bin/sh
source /etc/profile
PRG="$0"

while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done

# Get standard environment variables
PRGDIR=`dirname "$PRG"`


[ -z "$DEMO_HOME" ] && DEMO_HOME=`cd "$PRGDIR" >/dev/null; pwd`
[ -z "$DEMO_PID" ] && DEMO_PID=$DEMO_HOME/pid


FILE_LIST=`ls  ${DEMO_HOME}`

JAR_FILE=""
LOG_FILE=""

for FILE in $FILE_LIST
do
        if [ "${FILE##*.}" = "jar" ]; then
                JAR_FILE="${DEMO_HOME}/${FILE}"
                LOG_FILE="${FILE%.*}.log"
        fi
done

if [ -z $JAR_FILE ]; then
        echo "Error : no jar file in $DEMO_HOME"
        exit
fi

if [ -f "$DEMO_PID" ]; then
        PID=`cat $DEMO_PID`
  rm -rf $DEMO_PID
  kill -9 $PID
fi

nohup java $DEBUG -jar -Xmx256m -Dfile.encoding=UTF-8 -Dspring.config.location=/data/work/demo/ ${JAR_FILE} >>$DEMO_HOME/${LOG_FILE} 2>&1 &

PID=$!
echo $PID > ${DEMO_PID}
if [ ! -f $DEMO_HOME/${LOG_FILE} ]; then
        echo "begin....." >>$DEMO_HOME/${LOG_FILE}
fi

             3、停止脚本(stop.sh)

#!/bin/sh
PRG="$0"

while [ -h "$PRG" ]; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done

# Get standard environment variables
PRGDIR=`dirname "$PRG"`

[ -z "$DEMO_HOME" ] && DEMO_HOME=`cd "$PRGDIR" >/dev/null; pwd`
[ -z "$DEMO_PID" ] && DEMO_PID=$DEMO_HOME/pid

if [ ! -f "$DEMO_PID" ]; then
	echo 'no pid file found.'
else
	PID=`cat $DEMO_PID`
	echo "kill process $PID"
	rm -rf $DEMO_PID
  kill $PID
fi

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

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

             2、详细步骤

               (1)进入日志目录

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

               (2)查看启动时间

              cat demo.log | grep running

               (3)效果图


【总结】

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

猜你喜欢

转载自blog.csdn.net/u012829124/article/details/80719215