From 401f8b4fea05a485bcdbbcfb6e56a264da25f25a Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Thu, 9 Jan 2025 11:47:20 +0200 Subject: [PATCH] provide useful debug info when retrieving a version from GitHub fails (#15956) Closes https://github.com/coder/coder/issues/15851 This fails the installation when the version cannot be retrieved, and prints useful debug info. `install.sh` could use with more error-handling in general, but this at least ameliorates the linked issue. Signed-off-by: Danny Kopping --- install.sh | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index e6a553eaac..734fd3c44f 100755 --- a/install.sh +++ b/install.sh @@ -92,8 +92,19 @@ EOF } echo_latest_stable_version() { + url="https://github.com/coder/coder/releases/latest" # https://gist.github.com/lukechilds/a83e1d7127b78fef38c2914c4ececc3c#gistcomment-2758860 - version="$(curl -fsSLI -o /dev/null -w "%{url_effective}" https://github.com/coder/coder/releases/latest)" + response=$(curl -sSLI -o /dev/null -w "\n%{http_code} %{url_effective}" ${url}) + status_code=$(echo "$response" | tail -n1 | cut -d' ' -f1) + version=$(echo "$response" | tail -n1 | cut -d' ' -f2-) + body=$(echo "$response" | sed '$d') + + if [ "$status_code" != "200" ]; then + echoerr "GitHub API returned status code: ${status_code}" + echoerr "URL: ${url}" + exit 1 + fi + version="${version#https://github.com/coder/coder/releases/tag/v}" echo "${version}" } @@ -103,7 +114,19 @@ echo_latest_mainline_version() { # and take the first result. Note that we're sorting by space- # separated numbers and without utilizing the sort -V flag for the # best compatibility. - curl -fsSL https://api.github.com/repos/coder/coder/releases | + url="https://api.github.com/repos/coder/coder/releases" + response=$(curl -sSL -w "\n%{http_code}" ${url}) + status_code=$(echo "$response" | tail -n1) + body=$(echo "$response" | sed '$d') + + if [ "$status_code" != "200" ]; then + echoerr "GitHub API returned status code: ${status_code}" + echoerr "URL: ${url}" + echoerr "Response body: ${body}" + exit 1 + fi + + echo "$body" | awk -F'"' '/"tag_name"/ {print $4}' | tr -d v | tr . ' ' | @@ -405,8 +428,10 @@ main() { STABLE_VERSION=$(echo_latest_stable_version) if [ "${MAINLINE}" = 1 ]; then VERSION=$(echo_latest_mainline_version) + echoh "Resolved mainline version: v${VERSION}" elif [ "${STABLE}" = 1 ]; then VERSION=${STABLE_VERSION} + echoh "Resolved stable version: v${VERSION}" fi distro_name