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
This commit is contained in:
Stefan Agner 2023-09-25 10:27:36 +02:00 committed by GitHub
parent 8d6b4eb11b
commit 7870a1d78e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 9 deletions

View File

@ -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 "")