ci: publish daemonless multi-arch images #50

Merged
gofix merged 2 commits from ci/kaniko-multi-arch-images into master 2026-05-03 14:16:48 +00:00
Owner

Summary

  • build amd64 and arm64 images with the existing Kaniko-based, daemonless workflow
  • push arch-specific tags first, then publish multi-arch version/latest manifests with crane
  • enable Kaniko remote layer caching in per-architecture cache repositories

Runner requirements

  • amd64 image build requires a runner with both docker and amd64 labels
  • arm64 image build requires a runner with both docker and arm64 labels
  • the publish job can run on any existing docker runner and does not need Docker socket access

Validation

  • parsed .forgejo/workflows/container-image.yml with PyYAML
  • ran git diff --check
  • ran docker buildx build --check for linux/amd64 and linux/arm64
  • ran Kaniko --no-push on arm64 until it reached the Rust compile step; this confirmed the Dockerfile parses and runs under Kaniko natively
## Summary - build amd64 and arm64 images with the existing Kaniko-based, daemonless workflow - push arch-specific tags first, then publish multi-arch version/latest manifests with crane - enable Kaniko remote layer caching in per-architecture cache repositories ## Runner requirements - amd64 image build requires a runner with both `docker` and `amd64` labels - arm64 image build requires a runner with both `docker` and `arm64` labels - the publish job can run on any existing `docker` runner and does not need Docker socket access ## Validation - parsed `.forgejo/workflows/container-image.yml` with PyYAML - ran `git diff --check` - ran `docker buildx build --check` for `linux/amd64` and `linux/arm64` - ran Kaniko `--no-push` on arm64 until it reached the Rust compile step; this confirmed the Dockerfile parses and runs under Kaniko natively
ci: publish daemonless multi-arch images
All checks were successful
Rust CI / Format, lint, and test (pull_request) Successful in 44s
e72790be2b
ci: document qemu-capable amd64 runner
All checks were successful
Rust CI / Format, lint, and test (pull_request) Successful in 1m13s
791ebc4621
Author
Owner

openclaw runner setup completed.

  • forgejo-runner-gofix now declares docker, amd64, and arm64 labels.
  • Workflow job containers still do not receive Docker daemon access: runner config keeps container.docker_host: "-".
  • amd64 builds are supported on the arm64 openclaw host through host-level qemu/binfmt registration.
  • Added and enabled forgejo-runner-binfmt.service so amd64 binfmt is re-registered after Docker starts.
  • Verified through DIND: linux/amd64 runs as x86_64, linux/arm64 runs as aarch64.
  • Kaniko amd64 smoke test reached the amd64 apt-get RUN step without exec format error.
openclaw runner setup completed. - `forgejo-runner-gofix` now declares `docker`, `amd64`, and `arm64` labels. - Workflow job containers still do not receive Docker daemon access: runner config keeps `container.docker_host: "-"`. - `amd64` builds are supported on the arm64 openclaw host through host-level qemu/binfmt registration. - Added and enabled `forgejo-runner-binfmt.service` so amd64 binfmt is re-registered after Docker starts. - Verified through DIND: `linux/amd64` runs as `x86_64`, `linux/arm64` runs as `aarch64`. - Kaniko amd64 smoke test reached the amd64 `apt-get` RUN step without `exec format error`.
gofix merged commit 639faecd95 into master 2026-05-03 14:16:48 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
gofix/portal-tunnel-rs!50
No description provided.