Release v0.103.1 — the base image moves out of the deprecated build.yaml - #100
Merged
Merged
Conversation
…erfile During the v0.100.6 update (2026-09-14) the Supervisor logged "uses build.yaml which is deprecated. Move build parameters into the Dockerfile directly." The base image was written only in build.yaml, and the Dockerfile declared a bare `ARG BUILD_FROM`. Since Supervisor 2026.04.0 (home-assistant/supervisor#6694) BUILD_FROM is passed only while a build.yaml exists, so the release that drops that compatibility path would blank both FROM lines and fail every on-device update, while the old container kept running. - Dockerfile: `ARG SWITCHBOARD_BASE_IMAGE=ghcr.io/home-assistant/base:3.21`, used by both FROM lines. Deliberately not BUILD_FROM: Supervisors before 2026.04.0 always pass --build-arg BUILD_FROM and, with no build.yaml, fall back to an unpinned {arch}-base:latest that would override a default of that name. base:3.21 is a multi-platform manifest whose amd64/arm64 children have the same digests as the amd64-base:3.21 / aarch64-base:3.21 images build.yaml named, so the built base does not change. - Dockerfile: build.yaml's org.opencontainers.image.* labels moved into LABEL. - build.yaml deleted (the Supervisor finds it with a recursive build.* glob). - ci.yml docker-smoke and publish-release.yml images: the build.yaml resolver steps and the BUILD_FROM build-arg are gone, so CI and the release build exactly what the device builds. - tests/test_build_config.py pins it: no build.{yaml,yml,json} anywhere under the add-on, no Dockerfile.<arch>, every FROM resolves from the Dockerfile's global ARG default to one pinned multi-platform base through a name no builder injects, no workflow passes or reads a base image, the build matrices match config.yaml's arches, and the labels survived. A mutation battery of 18 mutants was fully killed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Supervisor warned on the v0.100.6 update that build.yaml is deprecated. Since Supervisor 2026.04.0 (home-assistant/supervisor#6694) BUILD_FROM is passed only while a build file exists, so dropping that compatibility path would have left both FROM lines empty and every on-device update failing to build. The base image is now the Dockerfile's own ARG SWITCHBOARD_BASE_IMAGE default (ghcr.io/home-assistant/base:3.21, whose amd64 and arm64 children are the images build.yaml named). build.yaml is deleted; CI smoke builds and the release workflow no longer pass a base, so they build exactly what the device builds. tests/test_build_config.py pins one source. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
During the v0.100.6 update the Supervisor logged: "App 5c825282_switchboard uses build.yaml which is deprecated. Move build parameters into the Dockerfile".
Since Supervisor 2026.04.0 (home-assistant/supervisor#6694),
BUILD_FROMis passed only while a build file exists. Once that compatibility path is removed, bothFROM ${BUILD_FROM}lines would resolve empty. On-device updates would then fail to build and silently stop installing, while the old container kept running.ARG SWITCHBOARD_BASE_IMAGE=ghcr.io/home-assistant/base:3.21is used by both stages.BUILD_FROM. Supervisors older than 2026.04.0 always pass that argument, falling back to an unpinned:latest.base:3.21is a multi-platform manifest. Its amd64 and arm64 children matched the oldamd64-base:3.21/aarch64-base:3.21digests (checked 2026-09-14).build.yamlis deleted. Its OCI labels move to the DockerfileLABEL.ci.ymlsmoke builds andpublish-release.ymlno longer pass a base image.tests/test_build_config.pychecks it and rejects an emptyFROM.Sources:
apps/build.pyand its tests.docs/apps/configuration.The live Supervisor logs from
supervisor.apps.build, which means it is at least 2026.05.1.Testing
buildxruns withoutBUILD_FROM;🤖 Generated with Claude Code