下面是自动化部署脚本,可以根据自己的业务自行更新。
如有大批量更新业务,可以尝试自己弄个简单的Linux客户端实现一键批量部署。
传送门 JAVA连接Linux并执行命令
#!/bin/bash
## 财务对账平台现网自动升级脚本V1.0
## By:财务平台小组 2019-03-15
## 执行缴费必传 6个参数 (没有特殊需求可以硬编码脚本中)
## 参数1项目路径 参数2项目名称 参数3新版本下载地址 参数4启动Shell脚本路径 参数5HTML文件更新路径 参数6 HTML安装路径
##项目路径
proDir=$1
##打包完成项目名
proName=$2
##新版本项目下载地址
downloadJarUrl=$3
##启动Shell缴费路径
startShell=$4
##新版本HTML下载地址
downloadHtmlUrl=$5
##HTML保存路径
HtmlPath=$6
## /home/zhanghui project-1.0.jar http://10.9.18.45:8080/project-1.0.jar /home/zhanghui/startup.sh http://10.9.18.45:8080/HFMS.zip /home/zhanghui/111434
## 项目备份保存路径
bfdir=$proDir/$(date +%Y)/$(date +%m)$(date +%d)/$(date +%H%M%S);
##项目下载临时保存名称
tempproName="temproject.jar"
##HTML下载临时保存名称
tempHtmlName="tempHtmlName.zip"
##创建备份路径
function createBfDir(){
if [ -d "$bfdir" ];then
echo "the dir[$bfdir] is exit"
else
mkdir -p $bfdir
echo "备份保存路径[$bfdir]创建完毕 "
fi
}
## 备份项目
function copyProject(){
cp $proDir/$proName $bfdir/$proName
echo "项目备份完毕 [$bfdir/$proName]"
zip -r $proDir/html.zip $HtmlPath/*
echo "HTML备份完毕 [$proDir/html.zip]"
}
##下载最新项目
function dowloadProject(){
echo "准备开始下载最新项目"
wget $downloadJarUrl -O $proDir/$tempproName
echo "项目下载完毕保存 保存路径[$proDir/$tempproName]";
wget $downloadHtmlUrl -O $proDir/$tempHtmlName
echo "HTML下载完毕保存 保存路径[$proDir/$tempproName]";
}
##停止当前运行项目进程
function killProject(){
pid=`ps -ef|grep $proName |grep -v grep|awk '{print $2}'`
if [ -n "$pid" ];then
echo "项目[${proName}]当前项目PID:${pid}"
kill -9 $pid
echo "执行 KIll -9 ${pid}"
else
echo "项目[${proName}]未运行"
fi
}
##更新项目
function updateProject(){
mv -f $proDir/$tempproName $proDir/$proName
echo "项目更新完毕"
unzip -o $proDir/$tempHtmlName -d $HtmlPath
echo "HTML 更新完毕"
## 可以修改为自己启动项目的命令
sh $startShell
echo "项目启动完成"
}
echo "初始化请求参数"
echo "项目路径:$proDir"
echo "项目名称:$proName"
echo "项目更新地址:$downloadJarUrl"
echo "项目启动缴费路径:$startShell"
echo "HTML更新地址:$downloadHtmlUrl"
echo "HTML更新目录:$HtmlPath"
echo "1.创建备份项目路径"
createBfDir
echo "2.项目进行归档备份"
copyProject
echo "3.下载最新项目"
dowloadProject
echo "4.停止当前运行项目"
killProject
echo "5.更新项目"
updateProject
echo "系统重新部署完毕"