From 7870a1d78e596aa29a422ec941bfc0994b50c52c Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Mon, 25 Sep 2023 10:27:36 +0200 Subject: [PATCH] Download latest stable Supervisor after device wipe (#2765) * Download latest stable Supervisor after device wipe Currently we download the latest tag after a device wipe, which gives us the latest Supervisor (which quite likely can be a development version). Use the stable version file instead to get the tag to be used to download the Supervisor. * Delete potentially corrupted updater info --- .../rootfs-overlay/usr/sbin/hassos-supervisor | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor b/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor index deec23a2c..f10798bd6 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor @@ -43,21 +43,28 @@ fi if [ -z "${SUPERVISOR_IMAGE_ID}" ]; then # Get the latest from update information # Using updater information instead of config. If the config version is - # broken, this creates a way (e.g., bad release). - SUPERVISOR_VERSION=$(jq -r '.supervisor // "latest"' "${SUPERVISOR_DATA}/updater.json" || echo "latest") + # broken, this creates a way back (e.g., bad release). + SUPERVISOR_VERSION=$(jq -r '.supervisor // "stable"' "${SUPERVISOR_DATA}/updater.json" || echo "stable") + + # Get version from stable channel in case we have no local version + # information. + if [ "${SUPERVISOR_VERSION}" = "stable" ]; then + SUPERVISOR_VERSION="$(curl -s --location https://version.home-assistant.io/stable.json | jq -e -r '.supervisor')" + fi echo "[WARNING] Supervisor image missing, downloading a fresh one: ${SUPERVISOR_VERSION}" # Pull in the Supervisor if docker pull "${SUPERVISOR_IMAGE}:${SUPERVISOR_VERSION}"; then - # Tag as latest if versioned - if [ "${SUPERVISOR_VERSION}" != "latest" ]; then - docker tag "${SUPERVISOR_IMAGE}:${SUPERVISOR_VERSION}" "${SUPERVISOR_IMAGE}:latest" - fi + # Tag as latest + docker tag "${SUPERVISOR_IMAGE}:${SUPERVISOR_VERSION}" "${SUPERVISOR_IMAGE}:latest" else - # Pull failed, updater info might be corrupted, re-trying with latest - echo "[WARNING] Supervisor downloading failed trying: latest" - docker pull "${SUPERVISOR_IMAGE}:latest" + # Pull failed, updater info might be corrupted or the release might have + # been removed from the container registry, delete the updater info + # to start from scratch on next try. + echo "[ERROR] Supervisor downloading failed." + rm -f "${SUPERVISOR_DATA}/updater.json" + exit 1 fi SUPERVISOR_IMAGE_ID=$(docker inspect --format='{{.Id}}' "${SUPERVISOR_IMAGE}" || echo "")