This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
CMS/1.Software/UI/gateway-ui/upgrade.sh
2024-11-19 17:19:21 +08:00

117 lines
2.2 KiB
Bash

#!/bin/bash
# 目标路径
BASE_PATH=/usr/local/gateway
BACKUP_PATH=/usr/local/gateway_backup
TMP_PATH=/usr/local/tmp
function backup(){
if [ -d $BASE_PATH ]; then
if [ ! -d $BACKUP_PATH ]; then
mkdir -p $BACKUP_PATH
fi
cp -rf $BASE_PATH/* $BACKUP_PATH/
fi
}
function rollback(){
if [ -d $BASE_PATH ]; then
if [ -d $BACKUP_PATH ]; then
rm -rf $BASE_PATH/*
cp -rf $BACKUP_PATH/* $BASE_PATH/
fi
fi
}
function upgrade(){
if [ ! -d $BASE_PATH ]; then
mkdir -p $BASE_PATH
fi
mkdir -p $TMP_PATH
unzip -d $TMP_PATH $1 > /dev/null 2>&1
if [ 0 -ne $? ];then
echo "解压失败">&2
return 1
fi
rsync -av --progress $TMP_PATH/gateway/* $BASE_PATH/ --exclude bin --exclude include --exclude lib --exclude lib64 --exclude runtime --exclude share --exclude src/config.toml > /dev/null 2>&1
if [ 0 -ne $? ];then
echo "复制文件失败">&2
return 2
fi
return 0
}
function clean(){
rm -rf $BACKUP_PATH/
rm -rf $TMP_PATH/
rm -rf $1
}
function service_ok(){
systemctl status gateway > /dev/null 2>&1
if [ 0 -eq $? ]
then
return 0
else
return 1
fi
}
function stop(){
service_ok
if [ 0 -eq $? ]; then
systemctl stop gateway > /dev/null 2>&1
fi
}
function start(){
stop
cnt=0
while [ 0 -eq 0 ]
do
systemctl start gateway > /dev/null 2>&1
sleep 1
service_ok
if [ 0 -eq $? ]; then
return 0
else
cnt=$[${cnt}+1]
if [ ${cnt} -eq 3 ]; then
return 1
fi
fi
done
}
if [ -n "$1" ];then
stop
backup
upgrade $1
if [ 1 -eq $? ];then
rollback
start
clean $1
exit 1
elif [ 2 -eq $? ];then
rollback
start
clean $1
exit 1
fi
start
if [ 0 -eq $? ];then
clean $1
exit 0
else
rollback
start
echo "服务无法启动,升级失败,回滚到上一版本">&2
clean $1
exit 1
fi
else
echo "没有升级包路径">&2
fi