Skip to content

Commit 57fa69e

Browse files
authored
Drop deprecated architectures, build aarch64 on ARM runners (#324)
* Drop build of deprecated architectures Do not build base images for deprecated architectures. This means removal of build for all armv7, armhf and i386 image variants. Since there is no Raspbian image for any of the supported architectures, these base images are removed completely. * Remove deprecated architectures from Dockerfile comments and S6_ARCH handling * Use arm64 runners for aarch64 builds As we're now effectively building only aarch64 or amd64, we can simply pass the arch to the builder image argument. * Remove unnecessary matrix excludes * Use matrix include pattern to select builder as suggested in code review
1 parent 7981d93 commit 57fa69e

File tree

13 files changed

+18
-195
lines changed

13 files changed

+18
-195
lines changed

.github/workflows/builder.yml

Lines changed: 15 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ env:
1111
ALPINE_LATEST: "3.22"
1212
DEBIAN_LATEST: "trixie"
1313
UBUNTU_LATEST: "24.04"
14-
RASPBIAN_LATEST: "trixie"
1514
PYTHON_LATEST: "3.13"
1615

1716
jobs:
@@ -22,7 +21,6 @@ jobs:
2221
architectures_alpine: ${{ steps.info_alpine.outputs.architectures }}
2322
architectures_debian: ${{ steps.info_debian.outputs.architectures }}
2423
architectures_ubuntu: ${{ steps.info_ubuntu.outputs.architectures }}
25-
architectures_raspbian: ${{ steps.info_raspbian.outputs.architectures }}
2624
release: ${{ steps.version.outputs.version }}
2725
steps:
2826
- name: Checkout the repository
@@ -48,12 +46,6 @@ jobs:
4846
with:
4947
path: "${{ github.workspace }}/ubuntu"
5048

51-
- name: Get information Raspbian
52-
id: info_raspbian
53-
uses: home-assistant/actions/helpers/info@master
54-
with:
55-
path: "${{ github.workspace }}/raspbian"
56-
5749
- name: Get version
5850
id: version
5951
uses: home-assistant/actions/helpers/version@master
@@ -63,7 +55,7 @@ jobs:
6355
build_alpine:
6456
name: Build ${{ matrix.arch }} alpine ${{ matrix.version }} base image
6557
needs: init
66-
runs-on: *runs-on-ubuntu
58+
runs-on: ${{ matrix.os }}
6759
permissions: &permissions
6860
contents: read
6961
id-token: write
@@ -72,6 +64,10 @@ jobs:
7264
matrix:
7365
arch: ${{ fromJson(needs.init.outputs.architectures_alpine) }}
7466
version: ["3.20", "3.21", "3.22"]
67+
include: &matrix-include-build
68+
- os: *runs-on-ubuntu
69+
- arch: aarch64
70+
os: ubuntu-24.04-arm
7571
steps:
7672
- &checkout
7773
name: Checkout the repository
@@ -103,6 +99,7 @@ jobs:
10399
- name: Build base image
104100
uses: home-assistant/[email protected]
105101
with:
102+
image: ${{ matrix.arch }}
106103
args: |
107104
$BUILD_ARGS \
108105
--${{ matrix.arch }} \
@@ -114,12 +111,13 @@ jobs:
114111
build_debian:
115112
name: Build ${{ matrix.arch }} debian ${{ matrix.version }} base image
116113
needs: init
117-
runs-on: *runs-on-ubuntu
114+
runs-on: ${{ matrix.os }}
118115
permissions: *permissions
119116
strategy:
120117
matrix:
121118
arch: ${{ fromJson(needs.init.outputs.architectures_debian) }}
122119
version: ["bookworm", "trixie"]
120+
include: *matrix-include-build
123121
steps:
124122
- *checkout
125123
- *login-container-registry
@@ -141,6 +139,7 @@ jobs:
141139
- name: Build base image
142140
uses: home-assistant/[email protected]
143141
with:
142+
image: ${{ matrix.arch }}
144143
args: |
145144
$BUILD_ARGS \
146145
--${{ matrix.arch }} \
@@ -153,12 +152,13 @@ jobs:
153152
build_ubuntu:
154153
name: Build ${{ matrix.arch }} ubuntu ${{ matrix.version }} base image
155154
needs: init
156-
runs-on: *runs-on-ubuntu
155+
runs-on: ${{ matrix.os }}
157156
permissions: *permissions
158157
strategy:
159158
matrix:
160159
arch: ${{ fromJson(needs.init.outputs.architectures_ubuntu) }}
161160
version: ["16.04", "18.04", "20.04", "22.04", "24.04"]
161+
include: *matrix-include-build
162162
steps:
163163
- *checkout
164164
- *login-container-registry
@@ -180,6 +180,7 @@ jobs:
180180
- name: Build base image
181181
uses: home-assistant/[email protected]
182182
with:
183+
image: ${{ matrix.arch }}
183184
args: |
184185
$BUILD_ARGS \
185186
--${{ matrix.arch }} \
@@ -188,63 +189,18 @@ jobs:
188189
--release ${{ needs.init.outputs.release }} \
189190
--base ${{ matrix.version }}
190191
191-
build_raspbian:
192-
name: Build ${{ matrix.arch }} raspbian ${{ matrix.version }} base image
193-
needs: init
194-
runs-on: *runs-on-ubuntu
195-
permissions: *permissions
196-
strategy:
197-
matrix:
198-
arch: ${{ fromJson(needs.init.outputs.architectures_raspbian) }}
199-
version: ["bookworm", "trixie"]
200-
steps:
201-
- *checkout
202-
- *login-container-registry
203-
204-
- name: Set build arguments
205-
shell: bash
206-
run: |
207-
if [[ "${{ github.event_name }}" == "release" ]]; then
208-
BUILD_ARGS="--additional-tag ${{ matrix.version }}-${{ github.event.release.tag_name }}"
209-
if [[ "${{ env.RASPBIAN_LATEST }}" != "${{ matrix.version }}" ]]; then
210-
BUILD_ARGS="$BUILD_ARGS --no-latest"
211-
fi
212-
else
213-
BUILD_ARGS="--test"
214-
fi
215-
216-
echo "BUILD_ARGS=$BUILD_ARGS" >> $GITHUB_ENV
217-
218-
- name: Build base image
219-
uses: home-assistant/[email protected]
220-
with:
221-
args: |
222-
$BUILD_ARGS \
223-
--${{ matrix.arch }} \
224-
--target /data/raspbian \
225-
--cosign \
226-
--release ${{ needs.init.outputs.release }} \
227-
--version-from ${{ matrix.version }}-slim \
228-
--base ${{ matrix.version }}
229-
230192
build_python:
231193
name: Build ${{ matrix.arch }} alpine ${{ matrix.version }} - python ${{ matrix.python }} base image
232194
needs: [init, build_alpine]
233-
runs-on: *runs-on-ubuntu
195+
runs-on: ${{ matrix.os }}
234196
permissions: *permissions
235197
strategy:
236198
fail-fast: false
237199
matrix:
238200
arch: ${{ fromJson(needs.init.outputs.architectures_alpine) }}
239201
version: ["3.20", "3.21", "3.22"]
240202
python: ["3.12", "3.13", "3.14"]
241-
exclude:
242-
- python: "3.14"
243-
arch: "armv7"
244-
- python: "3.14"
245-
arch: "armhf"
246-
- python: "3.14"
247-
arch: "i386"
203+
include: *matrix-include-build
248204
steps:
249205
- *checkout
250206
- *login-container-registry
@@ -266,6 +222,7 @@ jobs:
266222
- name: Build base image
267223
uses: home-assistant/[email protected]
268224
with:
225+
image: ${{ matrix.arch }}
269226
args: |
270227
$BUILD_ARGS \
271228
--${{ matrix.arch }} \

README.md

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@ We support version that are not EOL: https://alpinelinux.org/releases/
1313

1414
| Image | OS | Tags | latest |
1515
|-------|----|------|--------|
16-
| armhf-base | Alpine | 3.20, 3.21, 3.22 | 3.22 |
17-
| armv7-base | Alpine | 3.20, 3.21, 3.22 | 3.22 |
1816
| aarch64-base | Alpine | 3.20, 3.21, 3.22 | 3.22 |
1917
| amd64-base | Alpine | 3.20, 3.21, 3.22 | 3.22 |
20-
| i386-base | Alpine | 3.20, 3.21, 3.22 | 3.22 |
2118

2219
### jemalloc
2320

@@ -27,17 +24,10 @@ We support on our platforms jemalloc. On the application which you want to enabl
2724

2825
We support the latest 3 release with the latest 3 Alpine version.
2926

30-
> [!NOTE]
31-
> Python 3.14 will only be available on `aarch64` and `amd64` following the deprecation of `armhf`, `armv7` and `i386`.
32-
> See https://www.home-assistant.io/blog/2025/05/22/deprecating-core-and-supervised-installation-methods-and-32-bit-systems/
33-
3427
| Image | OS | Python versions | Tags | latest |
3528
|-------|----|-----------------|------|--------|
36-
| armhf-base-python | Alpine | 3.12, 3.13 | 3.12-alpine3.20, 3.12-alpine3.21, 3.12-alpine3.22, 3.13-alpine3.20, 3.13-alpine3.21, 3.13-alpine3.22 | 3.13-alpine3.22 |
37-
| armv7-base-python | Alpine | 3.12, 3.13 | 3.12-alpine3.20, 3.12-alpine3.21, 3.12-alpine3.22, 3.13-alpine3.20, 3.13-alpine3.21, 3.13-alpine3.22 | 3.13-alpine3.22 |
3829
| aarch64-base-python | Alpine | 3.12, 3.13, 3.14 | 3.12-alpine3.20, 3.12-alpine3.21, 3.12-alpine3.22, 3.13-alpine3.20, 3.13-alpine3.21, 3.13-alpine3.22, 3.14-alpine3.20, 3.14-alpine3.21, 3.14-alpine3.22 | 3.13-alpine3.22 |
3930
| amd64-base-python | Alpine | 3.12, 3.13, 3.14 | 3.12-alpine3.20, 3.12-alpine3.21, 3.12-alpine3.22, 3.13-alpine3.20, 3.13-alpine3.21, 3.13-alpine3.22, 3.14-alpine3.20, 3.14-alpine3.21, 3.14-alpine3.22 | 3.13-alpine3.22 |
40-
| i386-base-python | Alpine | 3.12, 3.13 | 3.12-alpine3.20, 3.12-alpine3.21, 3.12-alpine3.22, 3.13-alpine3.20, 3.13-alpine3.21, 3.13-alpine3.22 | 3.13-alpine3.22 |
4131

4232
## Others
4333

@@ -47,25 +37,14 @@ We support the latest 3 release with the latest 3 Alpine version.
4737

4838
| Image | OS | Tags | latest |
4939
|-------|----|------|--------|
50-
| armv7-base-debian | Debian | bookworm, trixie | trixie |
51-
| armhf-base-debian | Debian | bookworm, trixie | trixie |
5240
| aarch64-base-debian | Debian | bookworm, trixie | trixie |
5341
| amd64-base-debian | Debian | bookworm, trixie | trixie |
54-
| i386-base-debian | Debian | bookworm, trixie | trixie |
5542

5643
### Ubuntu images
5744

5845
**Note**: We prefer the alpine based version because it's more IoT friendly. In some case, you need a glibc system like this.
5946

6047
| Image | OS | Tags | latest |
6148
|-------|----|------|--------|
62-
| armv7-base-ubuntu | Ubuntu | 14.04, 16.04, 18.04, 20.04, 22.04, 24.04 | 24.04 |
6349
| aarch64-base-ubuntu | Ubuntu | 14.04, 16.04, 18.04, 20.04, 22.04, 24.04 | 24.04 |
6450
| amd64-base-ubuntu | Ubuntu | 14.04, 16.04, 18.04, 20.04, 22.04, 24.04 | 24.04 |
65-
| i386-base-ubuntu | Ubuntu | 14.04, 16.04, 18.04 | |
66-
67-
### Raspbian images
68-
69-
| Image | OS | Tags | latest |
70-
|-------|----|------|--------|
71-
| armhf-base-raspbian | Raspbian | bookworm, trixie | trixie |

alpine/Dockerfile

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
ARG BUILD_FROM
22
# amd64: alpine:${VERSION}
3-
# i386: i386/alpine:${VERSION}
43
# aarch64: arm64v8/alpine:${VERSION}
5-
# armv7: arm32v7/alpine:${VERSION}
6-
# armhf: arm32v6/alpine:${VERSION}
74

85
FROM ${BUILD_FROM}
96

@@ -48,11 +45,7 @@ RUN \
4845
autoconf \
4946
git \
5047
\
51-
&& if [ "${BUILD_ARCH}" = "armv7" ]; then \
52-
export S6_ARCH="arm"; \
53-
elif [ "${BUILD_ARCH}" = "i386" ]; then \
54-
export S6_ARCH="i686"; \
55-
elif [ "${BUILD_ARCH}" = "amd64" ]; then \
48+
&& if [ "${BUILD_ARCH}" = "amd64" ]; then \
5649
export S6_ARCH="x86_64"; \
5750
else \
5851
export S6_ARCH="${BUILD_ARCH}"; \

alpine/build.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
image: ghcr.io/home-assistant/{arch}-base
22
build_from:
33
aarch64: "arm64v8/alpine:"
4-
armv7: "arm32v7/alpine:"
5-
armhf: "arm32v6/alpine:"
64
amd64: "alpine:"
7-
i386: "i386/alpine:"
85
cosign:
96
identity: https://github.com/home-assistant/docker-base/.*
107
args:

debian/Dockerfile

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
ARG BUILD_FROM
22
# amd64: debian:${VERSION}-slim
3-
# i386: i386/debian:${VERSION}-slim
43
# aarch64: arm64v8/debian:${VERSION}-slim
5-
# armv7: arm32v7/debian:${VERSION}-slim
6-
# armhf: arm32v5/debian:${VERSION}-slim
74

85
FROM ${BUILD_FROM}
96

@@ -42,11 +39,7 @@ RUN \
4239
xz-utils \
4340
&& mkdir -p /usr/share/man/man1 \
4441
\
45-
&& if [ "${BUILD_ARCH}" = "armv7" ]; then \
46-
export S6_ARCH="arm"; \
47-
elif [ "${BUILD_ARCH}" = "i386" ]; then \
48-
export S6_ARCH="i686"; \
49-
elif [ "${BUILD_ARCH}" = "amd64" ]; then \
42+
&& if [ "${BUILD_ARCH}" = "amd64" ]; then \
5043
export S6_ARCH="x86_64"; \
5144
else \
5245
export S6_ARCH="${BUILD_ARCH}"; \

debian/build.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
image: ghcr.io/home-assistant/{arch}-base-debian
22
build_from:
33
aarch64: "arm64v8/debian:"
4-
armv7: "arm32v7/debian:"
5-
armhf: "arm32v5/debian:"
64
amd64: "debian:"
7-
i386: "i386/debian:"
85
cosign:
96
identity: https://github.com/home-assistant/docker-base/.*
107
args:

python/3.12/build.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
image: ghcr.io/home-assistant/{arch}-base-python
22
build_from:
33
aarch64: "ghcr.io/home-assistant/aarch64-base:"
4-
armv7: "ghcr.io/home-assistant/armv7-base:"
5-
armhf: "ghcr.io/home-assistant/armhf-base:"
64
amd64: "ghcr.io/home-assistant/amd64-base:"
7-
i386: "ghcr.io/home-assistant/i386-base:"
85
cosign:
96
base_identity: https://github.com/home-assistant/docker-base/.*
107
identity: https://github.com/home-assistant/docker-base/.*

python/3.13/build.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
image: ghcr.io/home-assistant/{arch}-base-python
22
build_from:
33
aarch64: "ghcr.io/home-assistant/aarch64-base:"
4-
armv7: "ghcr.io/home-assistant/armv7-base:"
5-
armhf: "ghcr.io/home-assistant/armhf-base:"
64
amd64: "ghcr.io/home-assistant/amd64-base:"
7-
i386: "ghcr.io/home-assistant/i386-base:"
85
cosign:
96
base_identity: https://github.com/home-assistant/docker-base/.*
107
identity: https://github.com/home-assistant/docker-base/.*

python/3.14/build.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
image: ghcr.io/home-assistant/{arch}-base-python
22
build_from:
33
aarch64: "ghcr.io/home-assistant/aarch64-base:"
4-
armv7: "ghcr.io/home-assistant/armv7-base:"
5-
armhf: "ghcr.io/home-assistant/armhf-base:"
64
amd64: "ghcr.io/home-assistant/amd64-base:"
7-
i386: "ghcr.io/home-assistant/i386-base:"
85
cosign:
96
base_identity: https://github.com/home-assistant/docker-base/.*
107
identity: https://github.com/home-assistant/docker-base/.*

raspbian/Dockerfile

Lines changed: 0 additions & 65 deletions
This file was deleted.

0 commit comments

Comments
 (0)