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:zhanghanPass@gitlab.demo.com/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)效果图
【总结】
机器能做的事情教给机器做,可以把省下的时间去做更具有创造性和挑战性的事情。
原文地址:https://blog.csdn.net/zhanghan18333611647/article/details/80719215
Cash Loan----:利用脚本自动化部署系统,解放我们的双手的更多相关文章
- .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统
.NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...
- 利用 Ansiable 自动化部署 Veeam Backup & Replication 9.5U4b
利用 Ansiable 自动化部署 Veeam Backup & Replication 9.5U4b 前言 上周出差期间接到一个做CMP(云管平台)Partner的需求,要在无人值守的安装 ...
- shell脚本自动化部署服务
shell脚本自动化部署 !/bin/bash #export PATH=$PATH:/export/maven/bin run_flag_dir="/data0/shell/deploy_ ...
- centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解
centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...
- shell脚本自动化部署
由于公司技术部团队较小,没有专门的运维团队,所以运维工作技术部承包了. 一.纯人工部署是这样的: 1. 本地打包:一般 maven clean package 2. 借助xftp上传到服务器对应目录 ...
- .NET 半天搭建Jenkins持续集成与自动化部署系统
前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛.由于我们所做的系统业务复杂,系统庞大,设计到多个系统之间的合作,而核心系统更是采用分布式系统架构,由 ...
- 脚本自动化部署varnish源码包
#!bin/bash#功能:自动化部署 varnish 源码包软件,运行脚本前,需提前下载 varnish-5.0.0.tar.gz#作者:liusingbonyum -y install gcc r ...
- 【EasyCi】持续集成交付,一键式自动化部署系统,开箱即用
前言 本人是一家互联网公司的java开发,由于公司初期公司未招运维人员,恰好我对linux比较熟悉,便在公司服务器搭建了一套Jenkins.Gitlab.Maven私服.Docker私服.Sonarq ...
- Shell脚本-自动化部署WEB
#! /bin/ ] then echo "#### 参数有误,\$1:构建号必填" exit fi cd /root/workspace/xinya_erp/xinya_web ...
随机推荐
- Android ImageView设置图片原理(上)
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 首先关于图片加载到ImageView上,我们来讨论几个问题: 如下: imageView.setIm ...
- GBX的Graph(最短路)
Problem B: Graph Time Limit: 2 Sec Memory Limit: 128 MB Submit: 1 Solved: 1 [cid=1000&pid=1&am ...
- 前6名免费DNS服务 - 公共DNS服务
前6名免费DNS服务 - 公共DNS服务 谷歌 8.8.8.8,8.8.4.4备份,用户将期望并获得高可用性,如DNSSEC等过滤和安全保护. OpenDNS 现在是Cisco帝国的一部分,主要是20 ...
- 洛谷P2234 [HNOI2002]营业额统计(01Tire树)
题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是 ...
- 用Zebra打造Linux下小型路由器
用Zebra打造Linux下小型路由器 现在的Internet网络相当庞大,不可能在不同的网络之间建立直接的连接,所以这时就必须用路由器为不同网络之间的通信提供路径选择.Linux下搭建路由器价格非常 ...
- $routeParams 实现路由指定参数
[摘要]后台管理系统权限控制到按钮级别,将每一个资源的key绑定在url中,渲染页面的时候去根据key来获取当前页面的按钮列表. router.js angular.module("app. ...
- Spring学习总结(10)——Spring JMS---三种消息监听器
消息监听器MessageListener 在spring整合JMS的应用中我们在定义消息监听器的时候一共可以定义三种类型的消息监听器,分别是MessageListener.SessionAwareMe ...
- Android 小米盒子游戏手柄按键捕获 - 能获取到的 home 键依旧是个痛
Android 小米盒子游戏手柄按键捕获 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...
- 解决iOS空指针数据的问题
iOS开发中常常会遇到空指针的问题. 如从后台传回来的Json数据,程序中不做推断就直接赋值操作,非常有可能出现崩溃闪退. 为了解决空指针的问题,治标的方法就是遇到一个处理一个.这样业务代码里面就插了 ...
- Maven学习总结(18)——深入理解Maven仓库
一.本地仓库(Local Repository) 本地仓库就是一个本机的目录,这个目录被用来存储我们项目的所有依赖(插件的jar包还有一些其他的文件),简单的说,当你build一个Maven项目的时候 ...