From c29bfe6e74485cef93fb75ffc125737c398bc4b1 Mon Sep 17 00:00:00 2001 From: Andrei Gherzan Date: Sun, 18 Oct 2026 19:31:23 +0100 Subject: [PATCH] ci: split machine coverage in tiers Full builds of 16 machines run serially on one runner and take 5-17h per PR. Most of them share tune, defconfig and DTBs with another machine. Build rpi-test-image only for raspberrypi0-wifi, raspberrypi-armv7, raspberrypi-armv8, raspberrypi3-64, raspberrypi4-64 and raspberrypi5, which together cover every tune, defconfig and kernel recipe. Run yocto-check-layer with every machine in conf/machine. Its BSP machine tests were skipped until now as no machines were passed. The machines are listed from the layer, so new ones are checked without workflow changes. Also trigger yocto-layer.yml on changes to itself. Fixes #1633 Signed-off-by: Andrei Gherzan --- .../entrypoint-yocto-check-layer.sh | 15 ++++++++++++++- .github/workflows/yocto-builds.yml | 18 +++++------------- .github/workflows/yocto-layer.yml | 1 + 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/.github/workflows/docker-images/yocto-builder/entrypoint-yocto-check-layer.sh b/.github/workflows/docker-images/yocto-builder/entrypoint-yocto-check-layer.sh index 5cf3736..55566a9 100755 --- a/.github/workflows/docker-images/yocto-builder/entrypoint-yocto-check-layer.sh +++ b/.github/workflows/docker-images/yocto-builder/entrypoint-yocto-check-layer.sh @@ -30,5 +30,18 @@ done # shellcheck disable=SC1091,SC2240 . ./openembedded-core/oe-init-build-env build + +# Build configuration +printf "\n# ------ ci ------\n" >> conf/local.conf +cat <>conf/local.conf +LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch" +EOCONF + +MACHINES="$(find "$GIT_REPO_PATH/conf/machine" -maxdepth 1 -name '*.conf' \ + -exec basename {} .conf \; | sort)" +[ -n "$MACHINES" ] || + error "No machines found under $GIT_REPO_PATH/conf/machine ." + +# shellcheck disable=SC2086 yocto-check-layer --with-software-layer-signature-check --debug \ - "$GIT_REPO_PATH" + "$GIT_REPO_PATH" --machines $MACHINES diff --git a/.github/workflows/yocto-builds.yml b/.github/workflows/yocto-builds.yml index b16cb09..997af5c 100644 --- a/.github/workflows/yocto-builds.yml +++ b/.github/workflows/yocto-builds.yml @@ -14,23 +14,15 @@ jobs: strategy: fail-fast: true matrix: + # Tier 1: one machine per tune / kernel defconfig. All machines are + # signature checked by yocto-check-layer in yocto-layer.yml. machine: - - raspberrypi - - raspberrypi0-2w-64 - - raspberrypi0-2w - - raspberrypi0 - raspberrypi0-wifi - - raspberrypi2-64 - - raspberrypi2 - - raspberrypi3-64 - - raspberrypi3 - - raspberrypi4-64 - - raspberrypi4 - - raspberrypi5 - - raspberrypi-cm3 - - raspberrypi-cm - raspberrypi-armv7 - raspberrypi-armv8 + - raspberrypi3-64 + - raspberrypi4-64 + - raspberrypi5 image: [rpi-test-image] distro: [poky] runs-on: [self-hosted, Linux] diff --git a/.github/workflows/yocto-layer.yml b/.github/workflows/yocto-layer.yml index 555241b..69ee81c 100644 --- a/.github/workflows/yocto-layer.yml +++ b/.github/workflows/yocto-layer.yml @@ -27,6 +27,7 @@ jobs: .github/workflows/docker-images/yocto-builder/** .github/workflows/docker-images/*.sh .github/workflows/yocto-builds.yml + .github/workflows/yocto-layer.yml classes/** conf/** dynamic-layers/**