Cash Loan----:利用脚本自动化部署系统,解放我们的双手
2024-10-01 21:39:15
【前言】
现在我们的项目发布(从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
最新文章
- Sqlsever
- asp.net截取指定长度的字符串内容
- C# 工程中引用出现感叹号
- IE浏览器GET传参后台乱码
- ls与dir的区别
- AJAX 跨域 :Access-Control-Allow-Origin
- https证书申请
- (转)C#中的泛型
- Bellman_ford POJ 3259 Wormholes
- BZOJ 2434 阿狸的打字机
- Canvas 雾玻璃
- MySQL InnoDB数据库备份与还原
- css3中webkit-box的用法(平分父元素)
- C# winform调用东软动态库的问题
- 如何使用python生成xml
- Markdown常用语法对应
- 解决myeclipse10.1导出War包出错:Security Alert:Integrity check error
- jquery序列化serialize()方法空格变为+问题解决参考方法
- ruby rails_autolink不能加载的原因
- CQOI2019(十二省联考)游记
热门文章
- 《深入理解java虚拟机》学习笔记四/垃圾收集器GC学习/一
- Dcloud课程9 天气小助手如何实现
- https://github.com/ 英文库
- 【hdu 1533】Going Home
- iOS多语言(国际化)开发(尾随系统 + APP内手动设置)
- [CortexM0--stm32f0308]discovery开发板
- C# 反射具体解释
- C++源文件到可运行文件的过程
- 利用安卓手机的OTG共享有线网络
- interpolator-动画执行方式