Drop arm64 / Raspberry Pi support: publish linux/amd64 only #79
Labels
No labels
area/ai
area/backend
area/frontend
area/infra
area/scheduler
area/wled
good-first-issue
priority/high
priority/low
priority/medium
type/bug
type/chore
type/ci-cd
type/docs
type/feature
type/qa
v1.0.0
v1.1.0
v1.2.0
v2.0.0
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/Iris-WLED#79
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decision
Iris ships
linux/amd64only. The arm64 half of the build is removed from CI, the release workflow, the spec, and the docs.Why
Spec §13.4 (docs/iris-spec.md:717) declared arm64 "a hard requirement — a meaningful fraction of self-hosters run Iris on a Raspberry Pi." That was written at spec v0.4, Status: Pre-implementation, and never revisited. It aimed at a third-party self-hoster audience that does not exist: the repo and registry are both private, and there is no public distribution channel.
Meanwhile:
main,ci.ymlbuilds the image twice: a throwaway multi-arch validation build (arm64 under QEMU, ~15 min,push: false, immediately discarded) plus the loadable amd64 build the E2E actually uses. Main-branch runs currently take 20–38 minutes.platforms:in two workflow files.Scope
Files:
.forgejo/workflows/ci.yml— dropsetup-qemu-actionand the multi-arch validation build; the loadable amd64 build already covers it. Push and PR runs become identical..forgejo/workflows/release.yml— drop QEMU,platforms: linux/amd64, rename the jobdocs/iris-spec.md§13.4 — replace the multi-arch paragraph, recording the rationale so it is not re-litigatedREADME.md— correct the published-arch claimdocs/release.md— correct the multi-arch publishing stepCHANGELOG.md— correct two claims under[1.0.0](still unreleased, so these would ship false)Issues:
priority/highv1.0.0 blocker that needed physical hardware):mainshould also carry arm64"docker/setup-qemu-actionon its next run; no manual action (buildx is still used)Acceptance
git grep -niE "multi-?arch|arm64|aarch64|raspberr|qemu"returns no hits outside lockfilesmainwith a single build passDone — working tree, not yet committed
Files (6, all edited):
.forgejo/workflows/ci.yml— removedsetup-qemu-actionand the throwaway multi-arch validation build. Thedocker-e2ejob now runs onedocker/build-push-actionstep (platforms: linux/amd64,load: true), which serves the health smoke test and the E2E. Theif: github.event_name == 'push'gating is gone, so push and PR runs are now identical..forgejo/workflows/release.yml— dropped QEMU,platforms: linux/amd64, job renamed to "Publish image & release".docs/iris-spec.md§13.4 — the "Multi-arch … hard requirement … Raspberry Pi" paragraph is replaced with a Platform paragraph stating amd64-only plus the rationale, so this isn't re-litigated.README.md,docs/release.md— arch claims corrected.CHANGELOG.md— three fixes: the CI-description line, the "Authoritative images" line, and the Deferred section, which listed "final hardware/end-to-end/year-rollover QA" — the "hardware" there was #6, now closed.Issues: #6 closed as obsolete; #3 retitled and rescoped; #2 and #4 amended; #64's arm64 decision checkbox resolved. #34 needs no action — Renovate will drop
docker/setup-qemu-actionfrom the dashboard on its next run (buildx is still in use).Verification:
git grep -niE "multi-?arch|arm64|aarch64|raspberr|rpi|qemu|cross-compil"returns no hits outsideuv.lock/package-lock.json(wheel filenames only). Both workflows parse as valid YAML, and each now has exactly one build step, bothlinux/amd64.Judgment call left in place: the v1.0.0 milestone description still reads "QA validated on real hardware". That now refers to the WLED controller via #7 rather than a Pi, which still holds — flagging rather than silently rewording.
Remaining: commit + push, then confirm CI is green on
mainwith a single build pass. Not closing until that's verified.Done — shipped in
5720ae5All scope items complete.
ci.ymlandrelease.ymlpublishlinux/amd64only, QEMU is gone, and the spec, README, release doc and CHANGELOG no longer claim arm64. Issues #6 (closed), #3 (rescoped), #2, #4 and #64 all amended; #34 needed no action.Verified:
git grep -niE "multi-?arch|arm64|aarch64|raspberr|rpi|qemu|cross-compil"returns no hits outsideuv.lock/package-lock.json(wheel filenames) andCHANGELOG.md— the latter being the record of the removal itself, which is what a changelog is for. CI green onmainwith a single build pass (#7642,docker-e2esuccess).Measured impact:
docker-e2enow runs 3m16s and a fullmainrun about 6m30s, against 20m13s and 38m11s before. The saving is larger than just dropping the emulated leg — pushes tomainwere building the image twice, and now build it once.Two notes on the acceptance criteria as I wrote them:
CHANGELOG.mdis excluded, for the reason above.priority/highblocker that needed physical hardware became a five-minute CI edit — but the count went up, not down.