From 5a93d15d5d75e1f9cd1eb8dbc1a82600a569527d Mon Sep 17 00:00:00 2001 From: xuwei-fit2cloud Date: Mon, 22 Jan 2024 15:26:28 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96dectl=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E5=90=8C=E6=97=B6=E5=8F=AF=E4=BB=A5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=9C=80=E6=96=B0=E7=89=88=E6=9C=AC=20#7492?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- installer/dectl | 202 ++++++++++++++++++++++++------------------------ 1 file changed, 99 insertions(+), 103 deletions(-) diff --git a/installer/dectl b/installer/dectl index 5749d3160d..162a380605 100644 --- a/installer/dectl +++ b/installer/dectl @@ -7,6 +7,9 @@ DE_RUNNING_BASE=${DE_BASE}/dataease2.0 need_init_apisix=false compose_files="-f docker-compose.yml" compose_cmd="docker-compose" +server_url="github.com" +current_version="" +latest_version="" set -a source ${DE_RUNNING_BASE}/.env @@ -25,6 +28,12 @@ if [[ ! ${DE_EXTERNAL_MYSQL} ]] || [ "${DE_EXTERNAL_MYSQL}" = "false" ]; then compose_files="${compose_files} -f docker-compose-mysql.yml" fi +if [[ -x "$(command -v python)" ]]; then + py_cmd='python' +elif [[ -x "$(command -v python3)" ]]; then + py_cmd='python3' +fi + function usage() { echo "DATAEASE 控制脚本" echo @@ -107,7 +116,87 @@ function _healthcheck() { } function _get_current_version() { de_current_version=$(grep "^ image:.*dataease:" ${DE_RUNNING_BASE}/docker-compose.yml | awk -F'dataease:' '{print $2}') - echo $de_current_version + if test -z $de_current_version; then + echo "获取当前版本失败,请检查当前版本是否正确" + exit 1 + fi + current_version=$de_current_version +} +function _get_available_server() { + git_urls=('github.com') + + for git_url in ${git_urls[*]}; do + success="true" + + echo -ne "检测 ${git_url} ... " + curl -m 5 -kIs https://${git_url} >/dev/null + if [ $? != 0 ]; then + echo "failed" + success="false" + else + echo "ok" + fi + + if [[ ${success} == "true" ]]; then + server_url=${git_url} + break + else + unset server_url + fi + done + + if [[ "x${server_url}" == "x" ]]; then + echo "没有找到稳定的下载服务器,请访问 https://community.fit2cloud.com/#/products/dataease/downloads 下载离线安装包" + exit 1 + fi +} +function _get_latest_version() { + rm -f /tmp/de_latest_release + + $py_cmd - < /tmp/de_latest_release") +EOF + + if [ ! -f /tmp/de_latest_release ]; then + echo "获取最新版本失败,请检查网络连接是否正常" + exit 1 + fi + latest_version=$(cat /tmp/de_latest_release) } function status() { echo @@ -164,113 +253,20 @@ function reload() { function version() { echo _get_current_version + _get_latest_version + echo "current version is $current_version" } function upgrade() { echo - git_urls=('github.com') - if [[ -x "$(command -v python)" ]]; then - py_cmd='python' - elif [[ -x "$(command -v python3)" ]]; then - py_cmd='python3' - fi + _get_current_version + echo "检测当前版本为${current_version}" + _get_available_server + _get_latest_version - 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 "没有找到稳定的下载服务器,请访问 https://community.fit2cloud.com/#/products/dataease/downloads 下载离线安装包" - exit 1 - fi - - if [[ "${server_url}" == "gitee.com" ]]; then - owner='fit2cloud-feizhiyun' - repo='DataEase' - else - owner='dataease' - repo='dataease' - fi - - export DE_VERSION=$(_get_current_version) - if test -z $DE_VERSION; then - echo "获取当前版本失败,请检查当前版本是否正确" - exit 1 - fi - echo "检测当前版本为${DE_VERSION}" - - rm -f /tmp/de_latest_release - $py_cmd - < /tmp/de_latest_release") -EOF - - if [ ! -f /tmp/de_latest_release ]; then - echo "获取最新版本失败,请检查网络连接是否正常" - exit 1 - fi - - latest_version=$(cat /tmp/de_latest_release) if [ "${latest_version}" = "" ]; then echo "未获取到最新版本" exit 1 - elif [ "${latest_version}" = "${DE_VERSION}" ]; then + elif [ "${latest_version}" = "${current_version}" ]; then echo "最新版本与当前版本一致,退出升级过程" exit 0 else @@ -283,11 +279,11 @@ EOF cd /tmp installer_file="dataease-online-installer-${latest_version}.tar.gz" - download_url="https://${server_url}/${owner}/${repo}/releases/download/${latest_version}/$installer_file" + download_url="https://${server_url}/dataease/dataease/releases/download/${latest_version}/$installer_file" curl -LOk -m 60 -o $installer_file $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" - return 2 + exit 1 fi if [ ! -f $installer_file ]; then