半自动化部署脚本 (需要手动输入r,来执行拉取代码,打包,停止旧的服务,备份旧的包,部署新的包,打印日志等)。如果要配置全自动化,可以通过监听git提交也就是所谓的钩子,检测提交内容msg中是否含有某一个信息,如publish,进行触发脚步部署。当然也可以根据不同的信息,部署不同的环境(调不同的脚本)

  1. 效果:想要部署的项目时,登录服务器执行ru 即可(使用的是别名)
    1. 这里是需要手动执行,因此是半自动化部署。
    2. 如果要配置全自动化,可以通过监听git提交也就是所谓的钩子检测提交内容msg中是否含有某一个信息,如publish,进行触发脚步部署。当然也可以根据不同的信息,部署不同的环境(调不同的脚本)也就是,开发人员提交代码信息的时候,将commit 内容除了必要的信息提交外,再加上关键字如publish,git 钩子检测到有关键字过来,
    3. 促发脚本去执行部署,达到自动化部署的效果。当然这些功能jekens也是自带有的。个人觉得jekens比较臃肿。
    4. 如果要定时部署的话,其实更简单了,只需要在linux配置定时器即可
    5. 效果图如下

 

1:保持脚本 run.sh

2:更改为可执行文件 chmod +777 run.sh

3: mv run.sh /usr/bin //也可以使用软链接的方式,这里是直接copy过去了

4:vim ~/.bashrc 添加 alias r='run.sh'  source ~/.bashrc即可

 

 脚本如下:

 

#!/bin/sh
echo ===============================================================
echo  欢迎使用【XXXX】---自动化部署脚本启动
echo ===============================================================
echo 即将为您部署系统应用...
sleep 1
APP_NAME=XXX
CODE_PATH=/tmp/publish/code
PUBLISH_PATH=/root/project
echo ====》1/14:准备从Git仓库拉取最新代码
cd $CODE_PATH
sleep 0.5
echo ====》2/14:开始从Git仓库拉取最新代码
sleep 0.5
git pull
if (( $? ))
then
     echo "====》3/14代码拉取失败,已为您退出,请核对"
     exit 1
else
     echo "====》3/14分支iot最新代码拉取成功"
fi
sleep 0.5
echo ====》4/14:开始打包... 
mvn clean package -Dmaven.test.skip=true
if (( $? ))
then         
     echo "====》5/14:打包失败,请查看,已为您退出"
     exit 1
else
     echo "====》5/14:打包完成,即将为您部署"
fi

echo ====》6/14:停止旧系统
sleep 0.5
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo '====》7/14:旧系统停止中...'
    kill -15 $tpid
fi
sleep 0.5
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo '====》8/14:旧系统已停止!'
    kill -9 $tpid
else
    echo '====》8/14:旧系统停止成功!'
fi
echo ====》9/14:开始备份旧系统部署包
sleep 0.5
mv  $PUBLISH_PATH/XXX.jar $PUBLISH_PATH/back/XXX-`date +"%m%d_%H_%M_%S"`.jar
echo ====》10/14:备份成功
sleep 0.5
echo ====》11/14:复制新文件到部署路径
mv $CODE_PATH/target/XXX.jar $PUBLISH_PATH/
cd $PUBLISH_PATH/
sleep 0.5
echo ====》12/14:开始部署项目
nohup java -jar  -Xms2048m -Xmx2048m -XX:+HeapDumpOnOutOfMemoryError XXX.jar  --spring.profiles.active=dev > /root/project/logs/XXX.log 2>&1 &
if (( $? ))
then
    echo "====》13/14:部署项目失败!"
    exit 1
else
    echo "====》13/14:项目启动中!"
fi
echo ====》14/14:即将为您打印log日志
sleep 0.5
tail -1000f /root/topoda/logs/XXX.log
View Code

 

6:如果要配置全自动化,可以通过监听git提交也就是所谓的钩子,检测提交内容msg中是否含有某一个信息,如publish,进行触发脚步部署。当然也可以根据不同的信息,部署不同的环境(调不同的脚本),也就是,开发人员提交代码信息的时候,将commit 内容除了必要的信息提交外,再加上关键字如publish,git 钩子检测到有关键字过来,促发脚本去执行部署,达到自动化部署的效果。当然这些功能jekens也是自带有的。个人觉得jekens比较臃肿。
posted @ 2024-03-05 14:46  沐海风  阅读(34)  评论(0编辑  收藏  举报