refactor: 优化dectl脚本,获取当前版本的同时可以查询最新版本 #7492
This commit is contained in:
parent
ac86ae39f8
commit
a663b06abf
@ -10,8 +10,12 @@ source ${DE_BASE}/dataease/.env
|
||||
export COMPOSE_HTTP_TIMEOUT=180
|
||||
|
||||
compose_files="-f docker-compose.yml"
|
||||
|
||||
compose_cmd="docker-compose"
|
||||
server_url=""
|
||||
current_version=""
|
||||
latest_version=""
|
||||
owner=""
|
||||
repo=""
|
||||
|
||||
docker-compose version >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
@ -21,7 +25,6 @@ if [ $? -ne 0 ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [ "${DE_ENGINE_MODE}" = "local" ]; then
|
||||
if [[ ! ${DE_EXTERNAL_KETTLE} ]] || [ ${DE_EXTERNAL_KETTLE} = "false" ]; then
|
||||
compose_files="${compose_files} -f docker-compose-kettle.yml"
|
||||
@ -84,6 +87,55 @@ function _healthcheck() {
|
||||
echo "【警告】服务在等待时间内未完全启动!请稍后使用 dectl status 检查服务运行状况。"
|
||||
echo
|
||||
}
|
||||
function _get_current_version() {
|
||||
de_current_version=$(grep "^ image:.*/dataease:" ${DE_BASE}/dataease/docker-compose.yml | awk -F'dataease:' '{print $2}')
|
||||
if test -z $de_current_version; then
|
||||
echo "获取当前版本失败,请检查当前版本是否正确"
|
||||
exit 1
|
||||
fi
|
||||
current_version=$de_current_version
|
||||
}
|
||||
function _get_available_server() {
|
||||
git_urls=('gitee.com' 'github.com')
|
||||
for git_url in ${git_urls[*]}
|
||||
do
|
||||
echo -ne "检测 ${git_url} ... "
|
||||
curl -m 5 -kIs https://${git_url} >/dev/null
|
||||
if [ $? != 0 ];then
|
||||
echo "failed"
|
||||
else
|
||||
echo "ok"
|
||||
server_url=${git_url}
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
function _get_latest_version() {
|
||||
if [[ -x "$(command -v python)" ]];then
|
||||
py_cmd='python'
|
||||
elif [[ -x "$(command -v python3)" ]]; then
|
||||
py_cmd='python3'
|
||||
fi
|
||||
|
||||
_get_available_server
|
||||
|
||||
if [[ "x${server_url}" == "x" ]];then
|
||||
echo "无法连接版本服务器,请稍候重试"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${server_url}" == "gitee.com" ]];then
|
||||
owner='fit2cloud-feizhiyun'
|
||||
repo='DataEase'
|
||||
gitee_release_content=$(curl -s https://gitee.com/api/v5/repos/${owner}/${repo}/releases/latest)
|
||||
# export LC_ALL="en_US.utf8"
|
||||
latest_version=$($py_cmd -c "import json; obj=json.loads('$gitee_release_content', strict=False); print(obj['tag_name']);")
|
||||
else
|
||||
owner='dataease'
|
||||
repo='dataease'
|
||||
latest_version=$(curl -s https://api.github.com/repos/${owner}/${repo}/releases/latest | grep -e "\"tag_name\"" | sed -r 's/.*: "(.*)",/\1/')
|
||||
fi
|
||||
}
|
||||
function status() {
|
||||
echo
|
||||
echo "DataEase 容器运行状态"
|
||||
@ -143,8 +195,10 @@ function uninstall() {
|
||||
}
|
||||
function version() {
|
||||
echo
|
||||
de_version=$(grep "^ image:.*/dataease:" ${DE_BASE}/dataease/docker-compose.yml | awk -F'dataease:' '{print $2}')
|
||||
echo $de_version
|
||||
_get_current_version
|
||||
_get_latest_version
|
||||
echo "current version is $current_version"
|
||||
echo "latest version is $latest_version"
|
||||
}
|
||||
function _clear_component_docker_images() {
|
||||
component=$1
|
||||
@ -193,55 +247,7 @@ function clear_logs() {
|
||||
echo "清理完毕"
|
||||
}
|
||||
function upgrade() {
|
||||
echo
|
||||
git_urls=('gitee.com' 'github.com')
|
||||
if [[ -x "$(command -v python)" ]];then
|
||||
py_cmd='python'
|
||||
elif [[ -x "$(command -v python3)" ]]; then
|
||||
py_cmd='python3'
|
||||
else
|
||||
git_urls=('github.com')
|
||||
fi
|
||||
|
||||
for git_url in ${git_urls[*]}
|
||||
do
|
||||
success="true"
|
||||
for i in {1..3}
|
||||
do
|
||||
echo -ne "检测 ${git_url} ... ${i} "
|
||||
curl -m 5 -kIs https://${git_url} >/dev/null
|
||||
if [ $? != 0 ];then
|
||||
echo "failed"
|
||||
success="false"
|
||||
break
|
||||
else
|
||||
echo "ok"
|
||||
fi
|
||||
done
|
||||
if [[ ${success} == "true" ]];then
|
||||
server_url=${git_url}
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "x${server_url}" == "x" ]];then
|
||||
echo "没有找到稳定的下载服务器,请稍候重试"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${server_url}" == "gitee.com" ]];then
|
||||
owner='fit2cloud-feizhiyun'
|
||||
repo='DataEase'
|
||||
gitee_release_content=$(curl -s https://gitee.com/api/v5/repos/${owner}/${repo}/releases/latest)
|
||||
# export LC_ALL="en_US.utf8"
|
||||
latest_version=$($py_cmd -c "import json; obj=json.loads('$gitee_release_content', strict=False); print(obj['tag_name']);")
|
||||
else
|
||||
owner='dataease'
|
||||
repo='dataease'
|
||||
latest_version=$(curl -s https://api.github.com/repos/${owner}/${repo}/releases/latest | grep -e "\"tag_name\"" | sed -r 's/.*: "(.*)",/\1/')
|
||||
fi
|
||||
|
||||
current_version=$(grep "^ image:.*/dataease:" ${DE_BASE}/dataease/docker-compose.yml | awk -F'dataease:' '{print $2}')
|
||||
version
|
||||
|
||||
if [ "${latest_version}" = "" ];then
|
||||
echo "未获取到最新版本"
|
||||
@ -250,13 +256,19 @@ function upgrade() {
|
||||
echo "最新版本与当前版本一致,退出升级过程"
|
||||
exit 0
|
||||
else
|
||||
echo -e "\e[32m 检测到最新版本为\e[1;33m${latest_version}\e[0;32m 即将执行在线升级...\e[0m"
|
||||
if [[ "$latest_version" =~ ^v2.* ]];then
|
||||
echo "获取到的最新版本与当前版本不匹配,请访问 https://community.fit2cloud.com/#/products/dataease/downloads 下载离线安装包"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\e[32m 检测到最新版本为\e[1;33m${latest_version}\e[0;32m 即将执行在线升级...\e[0m"
|
||||
fi
|
||||
fi
|
||||
sleep 2s
|
||||
|
||||
echo "使用下载服务器 ${server_url}"
|
||||
cd /tmp
|
||||
download_url="https://${server_url}/${owner}/${repo}/releases/download/${latest_version}/dataease-${latest_version}-online.tar.gz"
|
||||
|
||||
curl -LOk -m 60 -o dataease-${latest_version}-online.tar.gz $download_url
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "\e[31m升级失败:连接下载服务器超时!\n可手动下载升级包,然后执行\e[1;33m /bin/bash install.sh \e[0;31m离线升级,也可以重新执行一次 dectl upgrade 命令。\e[0m"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user