執行此腳本前需要安裝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