介绍如何通过shell脚本,将上传到gitlab上的代码pull到本地,通过maven编译打包,然后将生成的war包上传到中间服务器,之后通过远程调用中间服务器上的shell脚本,将war包传到项目部署服务器上,并完成tomcat的重启。
实现脚本:
总共分为本地发布脚本和中间服务器上的发布脚本,实现功能分别为:
本地脚本:
中间服务器上的发布脚本:
#!/bin/sh
if [ -z "$1" -o ! -f "$1" ]
thenecho "请输入正确的配置文件"exit 0;
fi
source $1
echo "切换到源码目录:$source_dir"
cd $source_dir
echo "切换分支"
git checkout $branch
if [ $? -ne 0 ]
thenecho "切换分支出错,退出"exit 1;
fi
echo "拉取最新的代码:$branch"
ret=$(git pull origin $branch)
if [ $? -ne 0 ]
thenecho "拉取失败,退出"exit 0;
fi
echo "进行打包,配置文件为:$prop"
ret=$(mvn -P$prop clean package -DskipTests)
if [ $? -ne 0 ]
thenecho "打包失败,退出"exit 0;
fi
echo "发送到远端ip进行批量操作,远端机器为:${duser}@$dip:$dport:$ddir"
scp -P $dport project.war ${duser}@${dip}:${ddir}/ROOT.war
echo "执行远端的批量命令"
ssh -p$dport ${duser}@${dip} "cd ${ddir};sh ${ddir}/deploy.sh"
执行参数文件
duser=admin
dip=中间服务器ip
dport=端口
ddir=war上传路径
prop=maven的属性参数文件
source_dir=项目目录
branch=项目分支
#!/bin/sh
echo "关闭已有pid"
args="-h hosts -P "
pssh $args "cat /opt/app/tomcat/pid"
pssh $args "cat /opt/app/tomcat/pid | sudo kill -9 `tee`"
echo "删除掉已有的文件"
pssh $args "sudo rm -fr /home/admin/tomcat/webapps/ROOT"
prsync -arh hosts ROOT.war /home/admin/tomcat/webapps/
pssh $args "sudo /home/admin/tomcat/bin/startup.sh"
echo "当前pid"
pssh $args "cat /opt/app/tomcat/pid"
参数文件hosts
10.28.70.157(应用服务器ip,可以为集群)
执行: sh和bash是不同的shell,sh中没有source命令,运行:sudo bash
本文发布于:2024-02-03 04:00:50,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170690404948513.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |