Pull latest stable Supervisor if image is missing (#336)

Similar to Home Assistant OS if the Supervisor is missing, make sure to
pull the latest stable image.

See also https://github.com/home-assistant/operating-system/pull/2765
This commit is contained in:
Stefan Agner 2023-11-03 01:01:56 +01:00 committed by GitHub
parent 8dbfda2221
commit d7290e4a19
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -37,21 +37,28 @@ touch ${SUPERVISOR_STARTUP_MARKER}
if [ -z "${SUPERVISOR_IMAGE_ID}" ]; then if [ -z "${SUPERVISOR_IMAGE_ID}" ]; then
# Get the latest from update information # Get the latest from update information
# Using updater information instead of config. If the config version is # Using updater information instead of config. If the config version is
# broken, this creates a way (e.g., bad release). # broken, this creates a way back (e.g., bad release).
SUPERVISOR_VERSION=$(jq -r '.supervisor // "latest"' "${SUPERVISOR_DATA}/updater.json" || echo "latest") 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}" echo "[WARNING] Supervisor image missing, downloading a fresh one: ${SUPERVISOR_VERSION}"
# Pull in the Supervisor # Pull in the Supervisor
if docker pull "${SUPERVISOR_IMAGE}:${SUPERVISOR_VERSION}"; then if docker pull "${SUPERVISOR_IMAGE}:${SUPERVISOR_VERSION}"; then
# Tag as latest if versioned # Tag as latest
if [ "${SUPERVISOR_VERSION}" != "latest" ]; then
docker tag "${SUPERVISOR_IMAGE}:${SUPERVISOR_VERSION}" "${SUPERVISOR_IMAGE}:latest" docker tag "${SUPERVISOR_IMAGE}:${SUPERVISOR_VERSION}" "${SUPERVISOR_IMAGE}:latest"
fi
else else
# Pull failed, updater info might be corrupted, re-trying with latest # Pull failed, updater info might be corrupted or the release might have
echo "[WARNING] Supervisor downloading failed trying: latest" # been removed from the container registry, delete the updater info
docker pull "${SUPERVISOR_IMAGE}:latest" # to start from scratch on next try.
echo "[ERROR] Supervisor downloading failed."
rm -f "${SUPERVISOR_DATA}/updater.json"
exit 1
fi fi
SUPERVISOR_IMAGE_ID=$(docker inspect --format='{{.Id}}' "${SUPERVISOR_IMAGE}" || echo "") SUPERVISOR_IMAGE_ID=$(docker inspect --format='{{.Id}}' "${SUPERVISOR_IMAGE}" || echo "")