执行此脚本前需要安装git和maven,脚本中的项目路径都是绝对路径,需要根据实际的生产环境手动修改
此脚本支持单项目部署和多项目部署
项目步骤:
1.从git上拉取最新代码
2.maven打包
3.kill掉原jar包进程
4.备份原jar包,并复制新jar包到项目路径下
5.启动程序
启动项目
启动单项目命令 sh xxx.sh institution
启动多项目命令 sh xxx.sh all
#项目名称
institution=institution
task=task
channels=channels
eureka=eureka
message=message
trade=trade
clearing=clearing
finance=finance
permission=permission
#多项目部署参数
files="eureka permission institution finance trade message channels task"
#时间
DATE=$(date +%m%d%H%M)
#命令输入参数
file=${1}
#拉代码 (注意git分支)
cd /usr/local/project/asianwallet && git pull
#打包 (注意打包环境)
cd /usr/local/project/asianwallet/ && mvn clean install -Dmaven.test.skip=true -Ppre
#判断执行哪个jar包
case ${file} in
"institution")
echo "------institution start-----"
demoFun ${file} ${DATE}
echo "------institution end-----"
;;
"task")
echo "------task start-----"
demoFun ${file} ${DATE}
echo "------task end-----"
;;
"channels")
echo "------channels start-----"
demoFun ${file} ${DATE}
echo "------channels end-----"
;;
"eureka")
echo "------eureka start-----"
demoFun ${file} ${DATE}
echo "------eureka end-----"
;;
"message")
echo "------message start-----"
demoFun ${file} ${DATE}
echo "------message end-----"
;;
"trade")
echo "------trade start-----"
demoFun ${file} ${DATE}
echo "------trade end-----"
;;
"clearing")
echo "------clearing start-----"
demoFun ${file} ${DATE}
echo "------clearing end-----"
;;
"finance")
echo "------finance start-----"
demoFun ${file} ${DATE}
echo "------finance end-----"
;;
"permission")
echo "------permission start-----"
demoFun ${file} ${DATE}
echo "------permission end-----"
;;
"all")
echo "------ALL start-----"
demoFunForeach ${files}
echo "------ALL end-----"
;;
esac
demoFun(){
#kill掉线程
echo "项目 : ${file}"
echo "时间 : ${DATE}"
if [ ${file} = "all" ]; then
echo "执行demoFunForeach"
else
#查看jar包原PID
procedure=`ps -ef|grep asianwallet-${file}|grep -w "java"| grep -v "grep"|awk '{print $2}'`
echo "PID : ${procedure}"
if [ ${procedure} = "" ]; then
echo "asianwallet-${file} is stop"
else
kill -9 ${procedure}
sleep 1
fi
#判断/asianwallet-${file}-1.0.0-SNAPSHOT.jar是否存在,并改名
if [ -f "/usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar" ];then
echo "/usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar 存在并备份"
mv /usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar /usr/local/asianwallets/asianwallet-${file}-${DATE}-SNAPSHOT.jar
fi
sleep 1
#移动jar包
echo "拷贝jar包到 /usr/local/asianwallets/"
cp /usr/local/project/asianwallet/asianwallet-${file}/target/asianwallet-${file}-1.0.0-SNAPSHOT.jar /usr/local/asianwallets/
#启动程序
echo "启动程序"
echo "授予当前用户权限"
chmod 777 /usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar
nohup java -jar /usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar &
fi
}
demoFun
demoFunForeach(){
if [ ${file} = "all" ]; then
for state in ${files}
do
DATE=$(date +%m%d%H%M)
procedure=`ps -ef|grep asianwallet-${state}|grep -w "java"| grep -v "grep"|awk '{print $2}'`
echo "PID : ${procedure}"
echo "项目 : ${state}"
if [ ${procedure} = "" ]; then
echo "asianwallet-${state} 没有进程"
else
kill -9 ${procedure}
sleep 1
fi
#判断/asianwallet-${state}-1.0.0-SNAPSHOT.jar是否存在,并改名
if [ -f "/usr/local/asianwallets/asianwallet-${state}-1.0.0-SNAPSHOT.jar" ];then
echo "/usr/local/asianwallets/asianwallet-${state}-1.0.0-SNAPSHOT.jar 存在并备份"
mv /usr/local/asianwallets/asianwallet-${state}-1.0.0-SNAPSHOT.jar /usr/local/asianwallets/asianwallet-${state}-${DATE}-SNAPSHOT.jar
fi
sleep 1
#移动jar包
echo "拷贝jar包到 /usr/local/asianwallets/"
cp /usr/local/project/asianwallet/asianwallet-${state}/target/asianwallet-${state}-1.0.0-SNAPSHOT.jar /usr/local/asianwallets/
#启动程序
echo "启动程序"
echo "授予当前用户权限"
chmod 777 /usr/local/asianwallets/asianwallet-${file}-1.0.0-SNAPSHOT.jar
nohup java -jar /usr/local/asianwallets/asianwallet-${state}-1.0.0-SNAPSHOT.jar &
done
fi
}
demoFunForeach