Java web项目自动化编译打包发布脚本

Java web项目自动化编译打包发布脚本

介绍如何通过shell脚本,将上传到gitlab上的代码pull到本地,通过maven编译打包,然后将生成的war包上传到中间服务器,之后通过远程调用中间服务器上的shell脚本,将war包传到项目部署服务器上,并完成tomcat的重启。

代码发布流程

Java web项目自动化编译打包发布脚本_第1张图片

实现脚本:

总共分为本地发布脚本和中间服务器上的发布脚本,实现功能分别为:

本地脚本:

  1. 切换到代码目录,checkout出需要打包的分支,pull拉取该分支最新的代码
  2. 用maven对其进行打包成为war包
  3. 将war包发送到中间服务器
  4. 运行中间服务器上的deploy发布脚本

中间服务器上的发布脚本:

  1. 杀死部署服务器的tomcat进程,删除tomcat/webRoot下的ROOT.war和其解压文件
  2. 将从本地传到中间服务器的war包发送到部署服务器上
  3. 启动tomcat进程,完成部署工作。

实现代码

  • 本地开发机器脚本
#!/bin/sh
if [ -z "$1" -o  ! -f "$1" ]
then
	echo "请输入正确的配置文件"
	exit 0;
fi
source $1
echo "切换到源码目录:$source_dir"
cd $source_dir
echo "切换分支"
git checkout $branch
if [ $? -ne 0 ]  
then
	echo "切换分支出错,退出"
	exit 1;
fi
echo "拉取最新的代码:$branch"
ret=$(git pull origin $branch)
if [ $? -ne 0 ]
then
	echo "拉取失败,退出"
	exit 0;
fi
echo "进行打包,配置文件为:$prop"
ret=$(mvn -P$prop clean package -DskipTests)
if [ $? -ne 0 ]
then
	echo "打包失败,退出"
	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

你可能感兴趣的:(Java开发技术,shell脚本)