【前言】

现在我们的项目发布(从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

Cash Loan----:利用脚本自动化部署系统,解放我们的双手的更多相关文章

  1. .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统

    .NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言     相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...

  2. 利用 Ansiable 自动化部署 Veeam Backup & Replication 9.5U4b

    利用 Ansiable 自动化部署 Veeam Backup & Replication 9.5U4b 前言 上周出差期间接到一个做CMP(云管平台)Partner的需求,要在无人值守的安装 ...

  3. shell脚本自动化部署服务

    shell脚本自动化部署 !/bin/bash #export PATH=$PATH:/export/maven/bin run_flag_dir="/data0/shell/deploy_ ...

  4. centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解

    centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...

  5. shell脚本自动化部署

    由于公司技术部团队较小,没有专门的运维团队,所以运维工作技术部承包了. 一.纯人工部署是这样的: 1. 本地打包:一般 maven clean package 2. 借助xftp上传到服务器对应目录 ...

  6. .NET 半天搭建Jenkins持续集成与自动化部署系统

    前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛.由于我们所做的系统业务复杂,系统庞大,设计到多个系统之间的合作,而核心系统更是采用分布式系统架构,由 ...

  7. 脚本自动化部署varnish源码包

    #!bin/bash#功能:自动化部署 varnish 源码包软件,运行脚本前,需提前下载 varnish-5.0.0.tar.gz#作者:liusingbonyum -y install gcc r ...

  8. 【EasyCi】持续集成交付,一键式自动化部署系统,开箱即用

    前言 本人是一家互联网公司的java开发,由于公司初期公司未招运维人员,恰好我对linux比较熟悉,便在公司服务器搭建了一套Jenkins.Gitlab.Maven私服.Docker私服.Sonarq ...

  9. Shell脚本-自动化部署WEB

    #! /bin/ ] then echo "#### 参数有误,\$1:构建号必填" exit fi cd /root/workspace/xinya_erp/xinya_web ...

随机推荐

  1. UVALive 5583 Dividing coins

    Dividing coins Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. Ori ...

  2. Tomcat之——配置项目有虚拟路径

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47024863 非常easy,在Tomcat的Server.xml文件里的Host节 ...

  3. 怎样使用 OneAPM 监控微软 Azure Cloud Service ?

    不知不觉微软 Azure 已经进入中国市场近两年的时间.那么 Azure 平台的性能到底怎样?资源载入的延迟.虚拟机的稳定性等问题是否切实满足客户期许.这些都是大家对微软 Azure 这个国外的云服务 ...

  4. js02 变量数据类型

    变量 JavaScript 是一种弱类型的脚本语言 var c = 3:即变量的声明(变量使用之前必须加var声明,编程规范) 变量的命名规则! 1.变量命名必须以字母或是下标符号”_”或者”$”为开 ...

  5. Spring中JDBCTemplate的入门

    Spring是IOC和AOP的容器框架,一站式的框架 连接数据库的步骤:[必须会写] Spring当中如何配置连接数据库? 第一步配置核心配置文件: <?xml version="1. ...

  6. Vue神之大坑处理:获取通过URL的的参数不可直接操作

    比如: $router.query['isZero'] == 'false';  //不会生效,刷新页面又好使了.打印处理是蓝色的false,再次刷新字体就变浅黑了. 解决:($router.quer ...

  7. php 生成文件txt到指定目录

    // 向文件追加写入内容 $site = PHP_EOL.date("Y-m-d H:i:s")."world"; //PHP_EOL换行 // 使用 FILE ...

  8. 快速傅里叶变换FFT(模板)

    好不容易闲下来总结一下FFT.QAQ 1.DFT: 对于多项式的乘法,DFT给了我们新的思路(点值表达式的O(n)相乘) 对于我们习惯的多项式算法例如多项式A(x)=5x+1和B(x)=2x+2 C( ...

  9. CISP/CISA 每日一题 四

    CISA 每日一题(答) 连续在线审计技术: 1.系统控制审计检查文件和内嵌审计模型(SCARF/EAM):非常复杂,适用于正常处理不能被中断:通过在组织的主机应用系统中内嵌经特别编写的审计软件,使审 ...

  10. php图像处理(thinkphp框架有相对强大的图像处理功能)

    php图像处理(thinkphp框架有相对强大的图像处理功能) 一.总结 1.php处理图像:php处理图像需要安装外库(gd库) 2.gd库函数可以非常完美的操作图像:安装好库之后,这个库里面的函数 ...