Commit graph

12 commits

Author SHA1 Message Date
Mitchell R
d608609ec4
ci(pi-gen): drop extra-host-dependencies (caused sudo apt exit 100)
Log diagnosis on run 26130391965:
  ##[error]The process '/usr/bin/sudo' failed with exit code 100

Failure was inside the action's 'Installing build dependencies on host'
step. extra-host-dependencies: qemu-user-static binfmt-support broke
apt — possibly conflicting locks or the action's input handling.

tonistiigi/binfmt --install arm64 already registered qemu-aarch64 with
'flags: POCF' (F = kernel-resident static binary). That's enough; no
need for the inside-container qemu packages.
2026-05-20 01:05:49 +02:00
Mitchell R
d342a3779f
ci(pi-gen): bring back extra-host-dependencies + binfmt diagnostic 2026-05-20 00:58:02 +02:00
Mitchell R
73a01a3d50
ci(pi-gen): revert to minimal known-valid inputs (drop unverified action keys) 2026-05-20 00:51:37 +02:00
Mitchell R
97c3e78141
ci(pi-gen): swap verbose-output → enable-debug + export-last-stage-only 2026-05-20 00:45:25 +02:00
Mitchell R
c60f2a8b9e
ci(pi-gen): extra-host-dependencies installs qemu inside pi-gen container
Host-side tonistiigi/binfmt registration doesn't propagate into the
pi-gen-action's nested Docker container's view of /proc/sys/fs/binfmt_misc.
usimd/pi-gen-action's extra-host-dependencies input runs apt-get inside
the pi-gen container before pi-gen launches — install qemu-user-static
+ binfmt-support there so the chroot's arm64 binaries can execute.
2026-05-20 00:39:51 +02:00
Mitchell R
69e4bcb14a
ci(pi-gen): tonistiigi/binfmt --install arm64 (F flag, kernel-resident QEMU)
apt's qemu-user-static + update-binfmts produces a registration that
pi-gen's nested Docker container still couldn't see. Switch to the
canonical tonistiigi/binfmt approach: privileged container that
installs QEMU statically with the F (fix-binary) flag, so the kernel
opens the qemu-aarch64-static binary at registration time and uses it
for all subsequent arm64 execs — independent of which container the
exec happens in.

Plus diagnostic: ls /proc/sys/fs/binfmt_misc + cat qemu-aarch64
detail, so next run's log surfaces whether registration actually
landed.
2026-05-20 00:31:42 +02:00
Mitchell R
ab955e12da
ci(pi-gen): install qemu-user-static via apt instead of setup-qemu-action
docker/setup-qemu-action registers binfmt via a privileged side container;
pi-gen-action's own nested Docker container doesn't inherit the
registration. Result: arm64 ELFs in the pi-gen chroot still fail to
exec, exit 1 before any stage runs.

apt-installed qemu-user-static + binfmt-support writes persistent
binfmt_misc entries to the kernel that propagate to every container
share. Pair with update-binfmts --enable qemu-aarch64 and a sanity
ls -la /proc/sys/fs/binfmt_misc/qemu-aarch64.
2026-05-20 00:23:16 +02:00
Mitchell R
3746f685be
ci: bump action versions to latest + add QEMU arm64 binfmt for pi-gen
Real cause of last pi-gen failure was surfaced by verbose-output:
  WARNING: Only a native build environment is supported.
  arm64: not supported on this machine/kernel

ubuntu-latest is x86_64; pi-gen builds an arm64 image and chroots into
it during stages, requiring binfmt_misc handlers for arm64. Add
docker/setup-qemu-action before the pi-gen step.

While here, audit + bump every action version (pinned to current
majors):
  actions/checkout            v4 → v6
  actions/upload-artifact     v4 → v7
  actions/download-artifact   v4 → v8
  softprops/action-gh-release v2 → v3
  docker/setup-qemu-action    @v4 (new)
  usimd/pi-gen-action         @v1 (already current major)
  dtolnay/rust-toolchain      @stable (rolling channel — keep)
2026-05-20 00:11:45 +02:00
Mitchell R
0f664fe1c1
ci(pi-gen): verbose pi-gen output + IMG_SUFFIX in EXPORT_IMAGE for diagnostics 2026-05-19 23:57:26 +02:00
Mitchell R
b7ec18e52e
ci(pi-gen): trixie everywhere + missing prerun.sh + EXPORT_IMAGE marker
Reverts misdiagnosis. pi-gen defaults to trixie since the Debian 13
release, which has gtk4 4.14 + libwebkitgtk-6.0 stock — no backports
needed. Build container, kiosk gtk feature gate, and pi-gen target all
realigned to trixie.

Actual reason last image run failed: our custom stage was missing the
mandatory prerun.sh (pi-gen calls it to seed ROOTFS_DIR from the
previous stage) and the EXPORT_IMAGE marker file (signals 'bake an
image at the end of this stage'). Both added.

Asset upload now globs deploy/*.img.xz so any extra exports stage2
produces ship alongside our customised one.
2026-05-19 05:19:32 +02:00
Mitchell R
3f20d03520
ci: block-style with: in build.yml checkout steps (flow-style + ${{ }} parser conflict) 2026-05-19 05:04:20 +02:00
Mitchell R
8f457c5ca9
ci: single reusable build.yml + release.yml orchestrator (auto-tag on master)
Replaces release-kiosk.yml + release-image.yml with two coupled workflows:

  release.yml — entrypoint. Computes version/channel/tag:
    - master push → semver patch bump from latest stable tag, append
      -dev.<shortsha>, create lightweight tag + prerelease record
    - v* tag push → use tag verbatim, channel from suffix (-beta./-dev. or
      stable), create release if missing
    Then invokes build.yml via uses: ./.github/workflows/build.yml.

  build.yml — reusable (workflow_call). Single source of truth for asset
    production:
    - kiosk binary matrix (aarch64, x86_64) in debian:trixie-slim
    - flashable .img.xz via pi-gen using the aarch64 artifact (gated by
      build-image input; master pushes default false to keep dev cycles
      fast, tag pushes default true for a full release)
    Both jobs attach to the release at tag_name=${{ inputs.tag }}.

Concurrency: master-branch runs cancel superseded peers; tag runs never
cancel. CI auto-import to a running BF server (BF_AUTOIMPORT_URL +
BF_AUTOIMPORT_API_KEY repo secrets) still wired.
2026-05-19 04:58:23 +02:00