Skip to content

P1: build-test-recipe: fix architecture compatibility filtering — causes false CI failures every release cycle #15547

@rpcme

Description

@rpcme

Problem

When a PR doesn't change any .bb files, build-test-recipe falls back to building all recipes with ptests. This default set includes recipes that aren't compatible with all architectures, causing false build failures that block merges on every release cycle.

This is a recurring operational burden — every week we have to force-merge PRs that are blocked by false CI failures from incompatible architecture builds.

Affected recipes (confirmed)

  • amazon-cloudwatch-agent — fails on qemuarm (scarthgap), qemuriscv64 (whinlatter)
  • corretto-*-bin (8, 17, 21, 25) — fail on qemuarm and qemuriscv64 (correctly marked COMPATIBLE_MACHINE = "null" but CI doesn't filter them)
  • greengrass-component-helloworld-rust — doesn't exist on scarthgap
  • amazon-kvs-producer-pic — compile failure on riscv64, ptest Bus error on arm32

Root cause

The COMPATIBLE_MACHINE filtering in build-test-recipe.yml has pattern matching bugs:

  1. qemuarm maps to arm architecture but the grep checks for armv7a/armv7ve — doesn't match
  2. The filtering logic doesn't handle all the ways recipes declare incompatibility
  3. The THINGS_TO_EXCLUDE hardcoded list is incomplete

Impact

  • Blocks automated version-upgrade PRs from merging without manual intervention
  • Blocks CI workflow PRs (which don't touch .bb files at all) from passing
  • Requires maintainer time every release cycle to force-merge past false failures
  • Erodes trust in CI — real failures get lost in the noise

Proposed fix

Options (not mutually exclusive):

  1. Fix the architecture pattern matching in the filtering logic to correctly map qemu machines to their architecture overrides
  2. Use a static per-architecture allow list for the default ptest set (similar to the CVE check approach in PR ci: pr-cve-check only scan changed recipes #15499)
  3. Expand the THINGS_TO_EXCLUDE list to cover all known-incompatible recipes
  4. Skip build-test entirely when no .bb/.inc files are changed (workflow-only PRs don't need recipe builds)

Option 4 is the quickest win. Option 1 is the proper fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions