prplos/.gitlab/tests/cram/components.yml
Petr Štetiar 15c1b5bd17
ci: cram: add diff-based component selection
Automatic component jobs need one reviewed source for path-to-board and
path-to-component decisions. Keeping that policy beside the existing
test buckets lets shared code classify changed tests consistently.

Add the six-board selection matrix and all board-specific,
cross-cutting, and explicit no-op paths. Validate the matrix while
loading the manifest.
Add a resolver for variable and label precedence, Git diffs, all-match
component unions, full collapse, empty reasons, and report output.

Exercise union routing, test classification, collapse, precedence,
stand-down reasons, defensive label errors, and six-board reporting
in an offline synthetic repository. Component coverage stays green.

Assisted-by: codex:gpt-5.6-sol
References: CI-9
Signed-off-by: Petr Štetiar <petr.stetiar@prplfoundation.org>
2026-08-26 20:37:08 +02:00

118 lines
5.8 KiB
YAML

# Maps cram tests to product components for split CI jobs.
# Globs are relative to this cram test root.
# prplos is the computed remainder and must never be enumerated here.
# full is implicit and contains every test collected for a board.
# sanity is prepended to each split component bucket by the resolver.
version: 1
sanity:
include:
- "*/005-build-config.t"
- "generic/ulimit.t"
- "generic/ubus-datamodel*.t"
- "generic/obuspa*.t"
components:
lcm:
description: Lifecycle Manager
include:
- "**/*lcm*.t"
- "generic/lcm/**/*.t"
- "generic/obuspa/obuspa-passing-fds.t"
- "generic/acceleration-plan-components/110-data-model-mapper.t"
- "generic/acceleration-plan-components/015-nat-reverse-portmapping.t"
prplmesh:
description: prplMesh + wireless stack (pwhm/mlo/apmld/wifi)
include:
- "**/*prplmesh*.t"
- "**/*pwhm*.t"
- "**/*mlo*.t"
- "**/*apmld*.t"
- "**/*bstamld*.t"
- "**/*wifi*.t"
- "**/*eht*.t"
- "**/*puncturing*.t"
- "**/*dm-mapper*.t"
- "**/*dataelement*.t"
- "**/*process-manager*.t"
- "wifi/**/*.t"
# prplos is the implicit remainder; do not add it as a component.
# Provisional CI-5 stub: final smoke-set curation is deferred to CI-5.
smoke:
include:
- "generic/busybox.t"
- "generic/ubus.t"
# Provisional CI-5 stub from the classification document's Real-HW list.
hw_only:
include:
- "generic/acceleration-plan-components/040-usb-filter.t"
# post/** is invoked separately for every component job and is not bucketed.
selection:
schema: 1
boards:
wnc-freedom: {alias: Freedom, priority: true}
mxl25641-hdk-6: {alias: OSPv2, priority: true}
turris-omnia: {alias: Omnia, priority: false}
prpl-haze: {alias: Haze, priority: false}
arcadyan-mozart: {alias: Mozart, priority: false}
nokia-valyrian: {alias: Valyrian, priority: false}
paths:
- {glob: profiles/mvebu.yml, boards: [turris-omnia], component: full}
- {glob: profiles/ipq807x.yml, boards: [prpl-haze], component: full}
- {glob: profiles/mtk_filogic.yml, boards: [arcadyan-mozart], component: full}
- {glob: profiles/airoha_an7581.yml, boards: [nokia-valyrian], component: full}
- {glob: profiles/qca_ipq95xx.yml, boards: [wnc-freedom], component: full}
- {glob: profiles/mxl_x86_osp_tb341_v2.yml, boards: [mxl25641-hdk-6], component: full}
- {glob: profiles/mxl_wlan_hostap_ng_wav700.yml, boards: [mxl25641-hdk-6], component: full}
- {glob: profiles/secure_boot_emmc.yml, boards: priority, component: full}
- {glob: profiles/feed_amx.yml, boards: priority, component: full}
- {glob: profiles/feed_prplmesh.yml, boards: priority, component: prplmesh}
- {glob: profiles/feed_prplos.yml, boards: priority, component: prplos}
- {glob: profiles/lcm.yml, boards: priority, component: lcm}
- {glob: profiles/prpl_core.yml, boards: priority, component: full}
- {glob: profiles/prpl.yml, boards: priority, component: full}
- {glob: profiles/mgmt.yml, boards: priority, component: prplos}
- {glob: profiles/security.yml, boards: priority, component: full}
- {glob: profiles/cellular.yml, boards: priority, component: prplos}
- {glob: profiles/thread.yml, boards: priority, component: prplos}
- {glob: .gitlab/tests/cram/generic/**, boards: priority, component: by-test}
- {glob: .gitlab/tests/cram/post/**, boards: priority, component: by-test}
- {glob: .gitlab/testbed.yml, boards: priority, component: prplos}
- {glob: package/**, boards: priority, component: full}
- {glob: target/**, boards: priority, component: full}
- {glob: toolchain/**, boards: priority, component: full}
- {glob: include/**, boards: priority, component: full}
- {glob: config/**, boards: priority, component: full}
- {glob: tools/**, boards: priority, component: full}
- {glob: feeds.conf.default, boards: priority, component: full}
- {glob: Makefile, boards: priority, component: full}
- {glob: rules.mk, boards: priority, component: full}
- {glob: .gitlab/tests/cram/turris-omnia/**, boards: [turris-omnia], component: by-test}
- {glob: .gitlab/tests/cram/prpl-haze/**, boards: [prpl-haze], component: by-test}
- {glob: .gitlab/tests/cram/arcadyan-mozart/**, boards: [arcadyan-mozart], component: by-test}
- {glob: .gitlab/tests/cram/nokia-valyrian/**, boards: [nokia-valyrian], component: by-test}
- {glob: .gitlab/tests/cram/wnc-freedom/**, boards: [wnc-freedom], component: by-test}
- {glob: .gitlab/tests/cram/mxl25641-hdk-6/**, boards: [mxl25641-hdk-6], component: by-test}
- {glob: .gitlab/testbed/turris-omnia.yml, boards: [turris-omnia], component: prplos}
- {glob: .gitlab/testbed/prpl-haze.yml, boards: [prpl-haze], component: prplos}
- {glob: .gitlab/testbed/arcadyan-mozart.yml, boards: [arcadyan-mozart], component: prplos}
- {glob: .gitlab/testbed/nokia-valyrian.yml, boards: [nokia-valyrian], component: prplos}
- {glob: .gitlab/testbed/wnc-freedom.yml, boards: [wnc-freedom], component: prplos}
- {glob: .gitlab/testbed/mxl25641-hdk-6.yml, boards: [mxl25641-hdk-6], component: prplos}
- {glob: profiles/debug.yml, component: noop}
- {glob: profiles/extender_full.yml, component: noop}
- {glob: profiles/extender_minimal.yml, component: noop}
- {glob: profiles/x86_64.yml, component: noop}
- {glob: profiles/ipq40xx.yml, component: noop}
- {glob: profiles/mxl_x86.yml, component: noop}
- {glob: profiles/mxl_x86_sec.yml, component: noop}
- {glob: profiles/mxl_x86_osp_tb341.yml, component: noop}
- {glob: profiles/mxl_wlan.yml, component: noop}
- {glob: profiles/mxl_wlan_hostap_ng.yml, component: noop}
- {glob: profiles/mxl_wlan_hostap_ng_gw.yml, component: noop}
- {glob: .gitlab/tests/cram/components.yml, component: noop}
- {glob: .gitlab/tests/cram/scripts/**, component: noop}