diff --git a/scripts/fetch-dashboard-assets.sh b/scripts/fetch-dashboard-assets.sh index 357980cd3033..9ffc10b7df82 100755 --- a/scripts/fetch-dashboard-assets.sh +++ b/scripts/fetch-dashboard-assets.sh @@ -1,8 +1,7 @@ #!/usr/bin/env bash # This script is used to download built dashboard assets from the "GreptimeTeam/dashboard" repository. - -set -e -x +set -ex declare -r SCRIPT_DIR=$(cd $(dirname ${0}) >/dev/null 2>&1 && pwd) declare -r ROOT_DIR=$(dirname ${SCRIPT_DIR}) @@ -20,13 +19,32 @@ else GITHUB_URL="${GITHUB_PROXY_URL%/}" fi +function retry_fetch() { + local url=$1 + local filename=$2 + + curl \ + --connect-timeout 10 \ + --retry 3 \ + --retry-connrefused \ + -fsSL $url --output $filename || \ + { + echo "Failed to download $url" + echo "You may try to set http_proxy and https_proxy environment variables." + if [[ -z "$GITHUB_PROXY_URL" ]]; then + echo "You may try to set GITHUB_PROXY_URL=http://mirror.ghproxy.com/" + fi + exit 1 + } +} + # Download the SHA256 checksum attached to the release. To verify the integrity # of the download, this checksum will be used to check the download tar file # containing the built dashboard assets. -curl -Ls ${GITHUB_URL}/GreptimeTeam/dashboard/releases/download/$RELEASE_VERSION/sha256.txt --output sha256.txt +retry_fetch "${GITHUB_URL}/GreptimeTeam/dashboard/releases/download/${RELEASE_VERSION}/sha256.txt" sha256.txt # Download the tar file containing the built dashboard assets. -curl -L ${GITHUB_URL}/GreptimeTeam/dashboard/releases/download/$RELEASE_VERSION/build.tar.gz --output build.tar.gz +retry_fetch "${GITHUB_URL}/GreptimeTeam/dashboard/releases/download/$RELEASE_VERSION/build.tar.gz" build.tar.gz # Verify the checksums match; exit if they don't. case "$(uname -s)" in