ci(release-kiosk): build in debian:bookworm-slim container to match Pi glibc

This commit is contained in:
Mitchell R 2026-05-15 01:05:43 +02:00
parent 6b63d71e3e
commit f22ca6b51a

View file

@ -2,17 +2,14 @@
# each as a GitHub Release asset, and optionally auto-import into a running # each as a GitHub Release asset, and optionally auto-import into a running
# BetterFrame server via /api/admin/firmware/import. # BetterFrame server via /api/admin/firmware/import.
# #
# Blacksmith runners are used for the heavy GTK/GStreamer/WebKit deps. The # Build environment is debian:bookworm-slim (matches Raspberry Pi OS Bookworm
# host arch matches the target so cargo can build natively (no cross). # the kiosk deploys to). Building on Ubuntu would link against a newer glibc
# than the Pi ships → `GLIBC_2.38 not found` at runtime. Runner host distro
# doesn't matter; we run all steps inside the bookworm container.
# #
# Required secrets: # Required secrets:
# BF_AUTOIMPORT_URL e.g. https://bf.example.com (optional) # BF_AUTOIMPORT_URL e.g. https://bf.example.com (optional)
# BF_AUTOIMPORT_API_KEY admin-scope API key for the BF server (optional) # BF_AUTOIMPORT_API_KEY admin-scope API key for the BF server (optional)
#
# Tagging:
# git tag v0.4.2 → channel = stable
# git tag v0.4.2-beta.1 → channel = beta
# workflow_dispatch → channel = dev (one-off builds)
name: release-kiosk name: release-kiosk
@ -37,7 +34,6 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
# Need 24.04 (noble) — libwebkitgtk-6.0-dev is not packaged on jammy.
- target: aarch64-unknown-linux-gnu - target: aarch64-unknown-linux-gnu
runs-on: blacksmith-2vcpu-ubuntu-2404-arm runs-on: blacksmith-2vcpu-ubuntu-2404-arm
arch_label: "aarch64 (Pi5)" arch_label: "aarch64 (Pi5)"
@ -47,7 +43,19 @@ jobs:
runs-on: ${{ matrix.runs-on }} runs-on: ${{ matrix.runs-on }}
# Lock glibc + APT package set to Bookworm — matches RPi OS Bookworm
# (Debian 12) which kiosks run. Raspbian is Debian; same packages.
container:
image: debian:bookworm-slim
steps: steps:
- name: Bootstrap apt + git (container has none preinstalled)
run: |
apt-get update
apt-get install -y --no-install-recommends \
ca-certificates curl git build-essential pkg-config \
jq sudo
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Determine channel + version - name: Determine channel + version
@ -66,12 +74,11 @@ jobs:
echo "channel=$channel" >> "$GITHUB_OUTPUT" echo "channel=$channel" >> "$GITHUB_OUTPUT"
echo "version=$version" >> "$GITHUB_OUTPUT" echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Install build deps - name: Install GTK/GStreamer/WebKit build deps
run: | run: |
sudo apt-get update apt-get install -y --no-install-recommends \
sudo apt-get install -y --no-install-recommends \
libgtk-4-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ libgtk-4-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libwebkitgtk-6.0-dev pkg-config build-essential libwebkitgtk-6.0-dev libssl-dev
- name: Install Rust toolchain - name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable uses: dtolnay/rust-toolchain@stable