This is an automated email from the ASF dual-hosted git repository.
acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 1a1932b8476 ci: reorganize ARM testlists by family and add chip build
filter
1a1932b8476 is described below
commit 1a1932b8476c8981c3d02de5e4bd1f3962ea73d2
Author: Swatantra Yadav <[email protected]>
AuthorDate: Mon Oct 19 00:18:25 2026 +0530
ci: reorganize ARM testlists by family and add chip build filter
Reorganize ARM CI testlists from arbitrary alphanumeric partitions
(arm-01..14) into 13 balanced vendor/family testlists, and add
chip-isolated build filtering in CI (Phase 2 of #20483).
Summary of changes:
- tools/ci/testlist/: Replace arm-01..14 with 13 balanced family
testlists (arm-imx, arm-nrf, arm-nxp, arm-rp2xxx, arm-sam, arm-ti,
arm-stm32f4-1/2, arm-stm32f0-f3, arm-stm32h7, arm-stm32l-u-g,
arm-stm32-other, arm-other). Full parity preserved for all defconfigs,
CMake builds, and blacklist entries with alphabetical sorting across all
files.
- .github/workflows/arch.yml: Detect isolated single-family ARM PRs
and build only the matching container(s). Automatically fall back
to all ARM containers if common files, unknown chips, multiple
families, or truncated diffs are detected.
- .github/workflows/build.yml: Update Linux-Arch board matrix to the
13 family targets and use local workflow references.
Resolves: #20483
Signed-off-by: Swatantra Yadav <[email protected]>
---
.github/workflows/arch.yml | 123 +++++++++++++++++++++++++-
.github/workflows/build.yml | 23 ++---
tools/ci/testlist/arm-01.dat | 3 -
tools/ci/testlist/arm-02.dat | 6 --
tools/ci/testlist/arm-03.dat | 5 --
tools/ci/testlist/arm-04.dat | 11 ---
tools/ci/testlist/arm-06.dat | 7 --
tools/ci/testlist/arm-08.dat | 54 -----------
tools/ci/testlist/arm-09.dat | 69 ---------------
tools/ci/testlist/arm-10.dat | 15 ----
tools/ci/testlist/arm-11.dat | 71 ---------------
tools/ci/testlist/arm-12.dat | 11 ---
tools/ci/testlist/arm-13.dat | 91 -------------------
tools/ci/testlist/arm-14.dat | 12 ---
tools/ci/testlist/arm-imx.dat | 10 +++
tools/ci/testlist/{arm-05.dat => arm-nrf.dat} | 53 +++--------
tools/ci/testlist/arm-nxp.dat | 15 ++++
tools/ci/testlist/arm-other.dat | 45 ++++++++++
tools/ci/testlist/arm-rp2xxx.dat | 8 ++
tools/ci/testlist/{arm-07.dat => arm-sam.dat} | 6 --
tools/ci/testlist/arm-stm32-other.dat | 28 ++++++
tools/ci/testlist/arm-stm32f0-f3.dat | 82 +++++++++++++++++
tools/ci/testlist/arm-stm32f4-1.dat | 24 +++++
tools/ci/testlist/arm-stm32f4-2.dat | 24 +++++
tools/ci/testlist/arm-stm32h7.dat | 24 +++++
tools/ci/testlist/arm-stm32l-u-g.dat | 43 +++++++++
tools/ci/testlist/arm-ti.dat | 8 ++
27 files changed, 454 insertions(+), 417 deletions(-)
diff --git a/.github/workflows/arch.yml b/.github/workflows/arch.yml
index b6d0d16cf24..a48ef3e0a81 100644
--- a/.github/workflows/arch.yml
+++ b/.github/workflows/arch.yml
@@ -99,6 +99,118 @@ jobs:
echo 'board_contains_xtensa=1' | tee -a $GITHUB_OUTPUT
fi
+ # Identify ARM Chip Family if PR is isolated to a single family
+ if [[ "$labels" == *"Arch: arm"* || "$labels" == *"Board: arm"* ]];
then
+ num_changed=$(gh pr view $pr --repo $GITHUB_REPOSITORY --json
changedFiles --jq '.changedFiles' 2>/dev/null || echo "0")
+ pr_files=$(gh pr diff $pr --repo $GITHUB_REPOSITORY --name-only
2>/dev/null || gh pr view $pr --repo $GITHUB_REPOSITORY --json files --jq
'.files[].path' 2>/dev/null || echo "")
+ if [[ "$pr_files" != "" ]]; then
+ arm_family=$(echo "$pr_files" | TOTAL_CHANGED="$num_changed" python3
-c '
+ import sys, re, os
+
+ try:
+ total_changed = int(os.environ.get("TOTAL_CHANGED", "0") or "0")
+ except ValueError:
+ sys.exit(0)
+ files = [l.strip() for l in sys.stdin if l.strip()]
+
+ # If file list is incomplete or PR is large (>100 files), leave
arm_family unset
+ if total_changed <= 0 or len(files) < total_changed:
+ sys.exit(0)
+ if total_changed > 100:
+ sys.exit(0)
+
+ code_files = [f for f in files if not
(f.startswith("Documentation/") or f.startswith(".github/") or
f.endswith(".md") or f.endswith(".rst"))]
+ if not code_files:
+ sys.exit(0)
+
+ common_dirs = {"common", "arm", "armv6-m", "armv7-a", "armv7-m",
"armv7-r", "armv8-m", "armv8-r", "cmake"}
+ chip_to_family = {
+ "stm32f4": "arm-stm32f4",
+ "stm32f0": "arm-stm32f0-f3",
+ "stm32f1": "arm-stm32f0-f3",
+ "stm32f2": "arm-stm32f0-f3",
+ "stm32f3": "arm-stm32f0-f3",
+ "stm32h7": "arm-stm32h7",
+ "stm32f7": "arm-stm32-other",
+ "stm32h5": "arm-stm32-other",
+ "stm32c0": "arm-stm32-other",
+ "stm32c5": "arm-stm32-other",
+ "stm32n6": "arm-stm32-other",
+ "stm32l0": "arm-stm32l-u-g",
+ "stm32l1": "arm-stm32l-u-g",
+ "stm32l4": "arm-stm32l-u-g",
+ "stm32l5": "arm-stm32l-u-g",
+ "stm32u0": "arm-stm32l-u-g",
+ "stm32u3": "arm-stm32l-u-g",
+ "stm32u5": "arm-stm32l-u-g",
+ "stm32g0": "arm-stm32l-u-g",
+ "stm32g4": "arm-stm32l-u-g",
+ "stm32wb": "arm-stm32l-u-g",
+ "stm32wl5": "arm-stm32l-u-g",
+ "rp2040": "arm-rp2xxx",
+ "rp23xx": "arm-rp2xxx",
+ "imxrt": "arm-imx",
+ "imx6": "arm-imx",
+ "imx9": "arm-imx",
+ "mx8mp": "arm-imx",
+ "lpc17xx_40xx": "arm-nxp",
+ "lpc214x": "arm-nxp",
+ "lpc2378": "arm-nxp",
+ "lpc31xx": "arm-nxp",
+ "lpc43xx": "arm-nxp",
+ "lpc54xx": "arm-nxp",
+ "kinetis": "arm-nxp",
+ "kl": "arm-nxp",
+ "s32k1xx": "arm-nxp",
+ "s32k3xx": "arm-nxp",
+ "lc823450": "arm-nxp",
+ "nrf52": "arm-nrf",
+ "nrf53": "arm-nrf",
+ "nrf54l": "arm-nrf",
+ "nrf91": "arm-nrf",
+ "sam34": "arm-sam",
+ "sama5": "arm-sam",
+ "samd2l2": "arm-sam",
+ "samd5e5": "arm-sam",
+ "samv7": "arm-sam",
+ "tiva": "arm-ti",
+ "cxd56xx": "arm-ti",
+ "rm57": "arm-ti",
+ "tms570": "arm-ti"
+ }
+
+ families = set()
+ for f in code_files:
+ if f.startswith("arch/arm/src/common/stm32/") or
f.startswith("boards/arm/common/stm32/"):
+ families.add("arm-stm32")
+ continue
+ m_arch = re.match(r"^arch/arm/src/([^/]+)/", f)
+ m_board = re.match(r"^boards/arm/([^/]+)/", f)
+ chip = None
+ if m_arch:
+ chip = m_arch.group(1)
+ elif m_board:
+ chip = m_board.group(1)
+ else:
+ sys.exit(0)
+ if chip in common_dirs or chip not in chip_to_family:
+ sys.exit(0)
+ fam = chip_to_family[chip]
+ families.add(fam)
+ if len(families) > 1 and not all(f_item.startswith("arm-stm32")
for f_item in families):
+ sys.exit(0)
+
+ if len(families) == 1:
+ print(list(families)[0])
+ elif len(families) > 1 and all(f_item.startswith("arm-stm32") for
f_item in families):
+ print("arm-stm32")
+ ' || echo "")
+ if [[ "$arm_family" != "" ]]; then
+ echo "arm_family=$arm_family" | tee -a $GITHUB_OUTPUT
+ fi
+ fi
+ fi
+
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -133,6 +245,7 @@ jobs:
board_contains_x86=${{ steps.get-arch.outputs.board_contains_x86 }}
board_contains_x86_64=${{
steps.get-arch.outputs.board_contains_x86_64 }}
board_contains_xtensa=${{
steps.get-arch.outputs.board_contains_xtensa }}
+ arm_family=${{ steps.get-arch.outputs.arm_family }}
# inputs.boards is a JSON Array: ["arm-01", "risc-v-01",
"xtensa-01", ...]
# We compact and remove the newlines
@@ -194,9 +307,13 @@ jobs:
board=$( echo "$boards" | jq ".[$i]" )
skip_build=0
- # For "Arch / Board: arm": Build arm-01, arm-02, ...
+ # For "Arch / Board: arm": Build arm-* or targeted family
if [[ "$arch_contains_arm" == "1" || "$board_contains_arm" == "1"
]]; then
- if [[ "$board" != *"arm-"* ]]; then
+ if [[ "$arm_family" != "" ]]; then
+ if [[ "$board" != *"$arm_family"* ]]; then
+ skip_build=1
+ fi
+ elif [[ "$board" != *"arm-"* ]]; then
skip_build=1
fi
@@ -220,7 +337,7 @@ jobs:
# For "Arch / Board: x86": Build other
elif [[ "$arch_contains_x86" == "1" || "$board_contains_x86" ==
"1" ]]; then
- if [[ "$board" != *"other"* ]]; then
+ if [[ "$board" != '"other"' ]]; then
skip_build=1
fi
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b7c97ffeecd..bfd7bb3ca94 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -307,19 +307,20 @@ jobs:
# Select the Linux Builds based on PR Arch Label
Linux-Arch:
- uses: apache/nuttx/.github/workflows/arch.yml@master
+ uses: ./.github/workflows/arch.yml
needs: Fetch-Source
with:
os: Linux
boards: |
[
- "arm-01", "risc-v-01", "sim-01", "xtensa-01", "arm64-01",
"x86_64-01", "other",
- "arm-02", "risc-v-02", "sim-02", "xtensa-02",
- "arm-03", "risc-v-03", "sim-03", "xtensa-03",
- "arm-04", "risc-v-04",
- "arm-05", "risc-v-05",
- "arm-06", "risc-v-06",
- "arm-07", "arm-08", "arm-09", "arm-10", "arm-11", "arm-12",
"arm-13", "arm-14"
+ "arm-imx", "risc-v-01", "sim-01", "xtensa-01", "arm64-01",
"x86_64-01", "other",
+ "arm-nrf", "risc-v-02", "sim-02", "xtensa-02",
+ "arm-nxp", "risc-v-03", "sim-03", "xtensa-03",
+ "arm-rp2xxx", "risc-v-04",
+ "arm-sam", "risc-v-05",
+ "arm-ti", "risc-v-06",
+ "arm-stm32f4-1", "arm-stm32f4-2", "arm-stm32f0-f3", "arm-stm32h7",
+ "arm-stm32l-u-g", "arm-stm32-other", "arm-other"
]
# Run the selected Linux Builds
@@ -508,7 +509,7 @@ jobs:
# Select the macOS Builds based on PR Arch Label
macOS-Arch:
- uses: apache/nuttx/.github/workflows/arch.yml@master
+ uses: ./.github/workflows/arch.yml
needs: Fetch-Source
with:
os: macOS
@@ -570,7 +571,7 @@ jobs:
# Select the msys2 Builds based on PR Arch Label
msys2-Arch:
- uses: apache/nuttx/.github/workflows/arch.yml@master
+ uses: ./.github/workflows/arch.yml
needs: Fetch-Source
with:
os: msys2
@@ -654,7 +655,7 @@ jobs:
# Select the msvc Builds based on PR Arch Label
msvc-Arch:
- uses: apache/nuttx/.github/workflows/arch.yml@master
+ uses: ./.github/workflows/arch.yml
needs: Fetch-Source
with:
os: msvc
diff --git a/tools/ci/testlist/arm-01.dat b/tools/ci/testlist/arm-01.dat
deleted file mode 100644
index eb2af1206ac..00000000000
--- a/tools/ci/testlist/arm-01.dat
+++ /dev/null
@@ -1,3 +0,0 @@
-/arm/[a]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/[b-h]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
diff --git a/tools/ci/testlist/arm-02.dat b/tools/ci/testlist/arm-02.dat
deleted file mode 100644
index c3cc6bc9a53..00000000000
--- a/tools/ci/testlist/arm-02.dat
+++ /dev/null
@@ -1,6 +0,0 @@
-/arm/[i-k]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-# Boards build by CMake
-CMake,sabre-6quad:smp
-CMake,sabre-6quad:coredump
-CMake,sabre-6quad:nsh
diff --git a/tools/ci/testlist/arm-03.dat b/tools/ci/testlist/arm-03.dat
deleted file mode 100644
index 579a4d17a94..00000000000
--- a/tools/ci/testlist/arm-03.dat
+++ /dev/null
@@ -1,5 +0,0 @@
-/arm/lpc17xx_40xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
--lpcxpresso-lpc1768:thttpd
--olimex-lpc1766stk:slip-httpd
--olimex-lpc1766stk:thttpd-nxflat
--zkit-arm-1769:thttpd
diff --git a/tools/ci/testlist/arm-04.dat b/tools/ci/testlist/arm-04.dat
deleted file mode 100644
index 5fe21a413b4..00000000000
--- a/tools/ci/testlist/arm-04.dat
+++ /dev/null
@@ -1,11 +0,0 @@
-/arm/lc823450,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/lpc214x,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/lpc2378,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/lpc31xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/lpc43xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/lpc54xx,CONFIG_ARM_TOOLCHAIN_CLANG
diff --git a/tools/ci/testlist/arm-06.dat b/tools/ci/testlist/arm-06.dat
deleted file mode 100644
index 885a2cb9685..00000000000
--- a/tools/ci/testlist/arm-06.dat
+++ /dev/null
@@ -1,7 +0,0 @@
-/arm/r*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-# ldnxflat is not available in the CI container. mknxflat is in tree.
--pimoroni-pico-2-plus:xipfs-nxflat
-
-# Boards build by CMake
-
-CMake,raspberrypi-pico:bmp280
diff --git a/tools/ci/testlist/arm-08.dat b/tools/ci/testlist/arm-08.dat
deleted file mode 100644
index b6354c5200c..00000000000
--- a/tools/ci/testlist/arm-08.dat
+++ /dev/null
@@ -1,54 +0,0 @@
-/arm/stm32c0/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32f0/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32f1/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32f2/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32f3/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32f4/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32f7/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32g0/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32g4/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32h7/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32l0/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32l1/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32l4/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32l5/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32u5/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32wb/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/stm32f1/nucleo-f1*,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f2/nucleo-f2*,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f3/nucleo-f30*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-# Boards build by CMake
-
-CMake,nucleo-f103rb:adc
-CMake,nucleo-f103rb:ihm07m1_b16
-CMake,nucleo-f103rb:nsh
-CMake,nucleo-f103rb:pwm
-CMake,nucleo-f103rb:qenco
-
-CMake,nucleo-f207zg:adc
-CMake,nucleo-f207zg:nsh
-CMake,nucleo-f207zg:pwm
-
-# CMake,nucleo-f302r8:can
-CMake,nucleo-f302r8:cansock
-CMake,nucleo-f302r8:highpri
-CMake,nucleo-f302r8:ihm07m1_b16
-CMake,nucleo-f302r8:ihm07m1_f32
-CMake,nucleo-f302r8:nsh
-CMake,nucleo-f302r8:qenco
-
-CMake,nucleo-f303re:adc
-# CMake,nucleo-f303re:can
-CMake,nucleo-f303re:hello
-CMake,nucleo-f303re:nsh
-# CMake,nucleo-f303re:nxlines
-CMake,nucleo-f303re:pwm
-# CMake,nucleo-f303re:serialrx
-
-CMake,nucleo-f303ze:adc
-CMake,nucleo-f303ze:nsh
-# CMake,nucleo-f303ze:nxlines_oled
diff --git a/tools/ci/testlist/arm-09.dat b/tools/ci/testlist/arm-09.dat
deleted file mode 100644
index 82448d0a9ab..00000000000
--- a/tools/ci/testlist/arm-09.dat
+++ /dev/null
@@ -1,69 +0,0 @@
-/arm/stm32f3/nucleo-f33*,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f4/nucleo-f4*,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32g0/nucleo-g*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32g4/nucleo-g*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/stm32l0/nucleo-l*,CONFIG_ARM_TOOLCHAIN_CLANG
-/arm/stm32l1/nucleo-l*,CONFIG_ARM_TOOLCHAIN_CLANG
-/arm/stm32l4/nucleo-l*,CONFIG_ARM_TOOLCHAIN_CLANG
-/arm/stm32l5/nucleo-l*,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f1/olimex-*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32f2/olimex-*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32f4/olimex-*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-# Boards build by CMake
-
-CMake,nucleo-f334r8:adc
-CMake,nucleo-f334r8:highpri
-CMake,nucleo-f334r8:nsh
-CMake,nucleo-f334r8:spwm1
-CMake,nucleo-f334r8:spwm2
-
-CMake,nucleo-f410rb:nsh
-
-CMake,nucleo-f412zg:nsh
-
-CMake,nucleo-f429zi:netnsh
-CMake,nucleo-f429zi:nsh
-
-CMake,nucleo-f446re:adc
-# CMake,nucleo-f446re:can
-CMake,nucleo-f446re:cansock
-CMake,nucleo-f446re:dac
-CMake,nucleo-f446re:gpio
-CMake,nucleo-f446re:ihm08m1_b16
-CMake,nucleo-f446re:ihm08m1_f32
-# CMake,nucleo-f446re:lcd
-CMake,nucleo-f446re:nsh
-CMake,nucleo-f446re:pwm
-CMake,nucleo-f446re:qenco
-CMake,nucleo-f446re:systemview
-
-CMake,nucleo-f401re:fb
-CMake,nucleo-f401re:nsh
-
-CMake,nucleo-f411re:mcp2515-extid
-CMake,nucleo-f411re:nsh
-
-CMake,nucleo-g431kb:comp
-CMake,nucleo-g431kb:nsh
-CMake,nucleo-g431kb:pwm
-
-CMake,nucleo-g431rb:adc
-# CMake,nucleo-g431rb:can
-CMake,nucleo-g431rb:cansock
-CMake,nucleo-g431rb:cordic
-CMake,nucleo-g431rb:ihm16m1_b16
-CMake,nucleo-g431rb:ihm16m1_f32
-CMake,nucleo-g431rb:nsh
-CMake,nucleo-g431rb:pwm
-CMake,nucleo-g431rb:qenco
-
-CMake,nucleo-g474re:nsh
-# CMake,nucleo-g474re:usbserial
-
-# CMake,nucleo-l152re:lcd
-CMake,nucleo-l152re:nsh
diff --git a/tools/ci/testlist/arm-10.dat b/tools/ci/testlist/arm-10.dat
deleted file mode 100644
index 30d56951ccd..00000000000
--- a/tools/ci/testlist/arm-10.dat
+++ /dev/null
@@ -1,15 +0,0 @@
-/arm/stm32f1/olimexino-stm32,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f4/omnibusf4,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f2/photon,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/stm32f1/shenzhou,CONFIG_ARM_TOOLCHAIN_CLANG
--shenzhou:thttpd
-
-/arm/stm32f1/stm3210e-eval,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f2/stm3220g-eval,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/stm32f4/stm3240g-eval,CONFIG_ARM_TOOLCHAIN_GNU_EABI
--stm3240g-eval:knxwm
diff --git a/tools/ci/testlist/arm-11.dat b/tools/ci/testlist/arm-11.dat
deleted file mode 100644
index 2564b8be8e0..00000000000
--- a/tools/ci/testlist/arm-11.dat
+++ /dev/null
@@ -1,71 +0,0 @@
-/arm/stm32f1/stm32_tiny,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f1/stm32butterfly2,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f1/stm32f103-minimum,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/stm32f3/stm32f334-disco,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f3/stm32f3discovery,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f4/stm32f411-minimum,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f4/stm32f411e-disco,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f4/stm32f429i-disco,CONFIG_ARM_TOOLCHAIN_CLANG
-
-# Boards build by CMake
-
-CMake,stm32_tiny:nsh
-CMake,stm32_tiny:usbnsh
-
-CMake,stm32butterfly2:nsh
-CMake,stm32butterfly2:nshnet
-CMake,stm32butterfly2:nshusbdev
-CMake,stm32butterfly2:nshusbhost
-
-# CMake,stm32f103-minimum:adb
-CMake,stm32f103-minimum:apds9960
-CMake,stm32f103-minimum:audio_tone
-CMake,stm32f103-minimum:buttons
-CMake,stm32f103-minimum:hello
-# CMake,stm32f103-minimum:jlx12864g
-CMake,stm32f103-minimum:lcd1602
-CMake,stm32f103-minimum:mcp2515
-CMake,stm32f103-minimum:nrf24
-CMake,stm32f103-minimum:nsh
-CMake,stm32f103-minimum:pwm
-CMake,stm32f103-minimum:rfid-rc522
-CMake,stm32f103-minimum:rgbled
-# CMake,stm32f103-minimum:sensors
-# CMake,stm32f103-minimum:ssd1306
-CMake,stm32f103-minimum:usbnsh
-CMake,stm32f103-minimum:userled
-CMake,stm32f103-minimum:veml6070
-
-CMake,stm32f334-disco:buckboost
-CMake,stm32f334-disco:nsh
-CMake,stm32f334-disco:powerled
-
-CMake,stm32f3discovery:nsh
-CMake,stm32f3discovery:usbnsh
-
-CMake,stm32f411-minimum:composite
-CMake,stm32f411-minimum:nsh
-CMake,stm32f411-minimum:spifsnsh
-CMake,stm32f411-minimum:usbmsc
-
-CMake,stm32f411e-disco:nsh
-
-CMake,stm32f429i-disco:adc
-CMake,stm32f429i-disco:extflash
-# CMake,stm32f429i-disco:fb
-CMake,stm32f429i-disco:highpri
-# CMake,stm32f429i-disco:lcd
-# CMake,stm32f429i-disco:lvgl
-CMake,stm32f429i-disco:nsh
-# CMake,stm32f429i-disco:nxhello
-# CMake,stm32f429i-disco:nxwm
-# CMake,stm32f429i-disco:ofloader
-CMake,stm32f429i-disco:usbmsc
-CMake,stm32f429i-disco:usbnsh
\ No newline at end of file
diff --git a/tools/ci/testlist/arm-12.dat b/tools/ci/testlist/arm-12.dat
deleted file mode 100644
index e9e1aa7a42b..00000000000
--- a/tools/ci/testlist/arm-12.dat
+++ /dev/null
@@ -1,11 +0,0 @@
-/arm/stm32f4/stm32f4discovery,CONFIG_ARM_TOOLCHAIN_GNU_EABI
--stm32f4discovery:winbuild
-
-/arm/stm32l1/stm32ldiscovery,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f1/stm32vldiscovery,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32f1/viewtool-stm32f107,CONFIG_ARM_TOOLCHAIN_CLANG
-
-# cURL error 60 SSL certificate expired
--stm32f4discovery:cxxtest
diff --git a/tools/ci/testlist/arm-13.dat b/tools/ci/testlist/arm-13.dat
deleted file mode 100644
index 411f2ed1ea2..00000000000
--- a/tools/ci/testlist/arm-13.dat
+++ /dev/null
@@ -1,91 +0,0 @@
-/arm/stm32f7,CONFIG_ARM_TOOLCHAIN_CLANG
-
-/arm/stm32h5,CONFIG_ARM_TOOLCHAIN_CLANG
-/arm/stm32h7,CONFIG_ARM_TOOLCHAIN_CLANG
-
-# Boards build by CMake
-
-CMake,b-l072z-lrwan1:adc
-CMake,b-l072z-lrwan1:nsh
-#CMake,b-l072z-lrwan1:nxlines_oled
-CMake,b-l072z-lrwan1:sx127x
-
-CMake,nucleo-f072rb:nsh
-
-CMake,nucleo-f091rc:nsh
-CMake,nucleo-f091rc:sx127x
-
-CMake,nucleo-g070rb:nsh
-
-CMake,nucleo-g071rb:nsh
-
-CMake,nucleo-l073rz:nsh
-CMake,nucleo-l073rz:sx127x
-
-CMake,stm32f051-discovery:nsh
-
-CMake,stm32f072-discovery:nsh
-
-CMake,stm32g071b-disco:nsh
-#CMake,stm32g071b-disco:oled
-
-CMake,stm32l0538-disco:nsh
-
-CMake,nucleo-f722ze:can
-CMake,nucleo-f722ze:cansock
-CMake,nucleo-f722ze:composite
-
-CMake,nucleo-f746zg:evalos
-CMake,nucleo-f746zg:nsh
-CMake,nucleo-f746zg:pysim
-
-CMake,nucleo-f767zi:evalos
-CMake,nucleo-f767zi:netnsh
-CMake,nucleo-f767zi:nsh
-
-CMake,steval-eth001v1:foc_b16
-CMake,steval-eth001v1:foc_f32
-CMake,steval-eth001v1:nsh
-
-CMake,stm32f746g-disco:audio
-CMake,stm32f746g-disco:fb
-# CMake,stm32f746g-disco:lvgl
-CMake,stm32f746g-disco:netnsh
-CMake,stm32f746g-disco:nsh
-# CMake,stm32f746g-disco:nxdemo
-# CMake,stm32f746g-disco:nxterm
-
-CMake,stm32f746-ws:nsh
-
-CMake,stm32f769i-disco:netnsh
-CMake,stm32f769i-disco:nsh
-
-CMake,stm32f777zit6-meadow:nsh
-# CMake,stm32f777zit6-meadow:sdram
-
-CMake,nucleo-h743zi:composite
-# CMake,nucleo-h743zi:elf
-CMake,nucleo-h743zi:mcuboot-app
-CMake,nucleo-h743zi:mcuboot-loader
-CMake,nucleo-h743zi:netnsh
-CMake,nucleo-h743zi:nsh
-# CMake,nucleo-h743zi:nxlines_oled
-CMake,nucleo-h743zi:otg_fs_host
-CMake,nucleo-h743zi:pwm
-CMake,nucleo-h743zi:rndis
-
-# CMake,nucleo-h743zi2:jumbo
-CMake,nucleo-h743zi2:netnsh
-CMake,nucleo-h743zi2:nsh
-CMake,nucleo-h743zi2:pysim
-CMake,nucleo-h743zi2:socketcan
-
-# CMake,stm32h745i-disco:lvgl
-CMake,stm32h745i-disco:netnsh
-CMake,stm32h745i-disco:nsh
-CMake,stm32h745i-disco:touchtest
-
-CMake,nucleo-h745zi:nsh_cm4
-CMake,nucleo-h745zi:nsh_cm4_rptun
-CMake,nucleo-h745zi:nsh_cm7
-CMake,nucleo-h745zi:nsh_cm7_rptun
diff --git a/tools/ci/testlist/arm-14.dat b/tools/ci/testlist/arm-14.dat
deleted file mode 100644
index 04ecf81f023..00000000000
--- a/tools/ci/testlist/arm-14.dat
+++ /dev/null
@@ -1,12 +0,0 @@
-/arm/stm32l*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32n*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32u*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/stm32w*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/str71x,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/[t-z]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
--eagle100:thttpd
--launchxl-cc1310:nsh
--tms570ls31x-usb-kit:nsh
--tlsr8278adk80d:nsh
diff --git a/tools/ci/testlist/arm-imx.dat b/tools/ci/testlist/arm-imx.dat
new file mode 100644
index 00000000000..cb27b3c61fe
--- /dev/null
+++ b/tools/ci/testlist/arm-imx.dat
@@ -0,0 +1,10 @@
+/arm/imx6,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/imx9,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/imxrt,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/mx8mp/*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+# Boards build by CMake
+
+CMake,sabre-6quad:coredump
+CMake,sabre-6quad:nsh
+CMake,sabre-6quad:smp
diff --git a/tools/ci/testlist/arm-05.dat b/tools/ci/testlist/arm-nrf.dat
similarity index 68%
rename from tools/ci/testlist/arm-05.dat
rename to tools/ci/testlist/arm-nrf.dat
index 1ebbfed6c19..0791f974f6b 100644
--- a/tools/ci/testlist/arm-05.dat
+++ b/tools/ci/testlist/arm-nrf.dat
@@ -1,29 +1,13 @@
-/arm/max326xx/*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/moxart/*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/mps/mps2*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/mps/mps3-an547/configs/ap,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/mps/mps3-an547/configs/bl,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/mps/mps3-an547/configs/clang,CONFIG_ARM_TOOLCHAIN_CLANG
-/arm/mps/mps3-an547/configs/nsh,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-/arm/mps/mps3-an547/configs/picostest,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/mx8mp/*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
-/arm/[n-q]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
--moxa:nsh
+/arm/nrf52,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/nrf53,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/nrf54l,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/nrf91,CONFIG_ARM_TOOLCHAIN_GNU_EABI
# Boards build by CMake
-CMake,arduino-nano-33ble:nsh
-CMake,arduino-nano-33ble:usbnsh
-
-CMake,arduino-nano-33ble-rev2:nsh
-CMake,arduino-nano-33ble-rev2:usbnsh
-
-CMAKE,mps3-an547:gcov
-
+CMake,nrf52-feather:i2c
+CMake,nrf52-feather:nsh
+CMake,nrf52-feather:userleds
CMake,nrf52832-dk:mcuboot_app
CMake,nrf52832-dk:mcuboot_loader
CMake,nrf52832-dk:mcuboot_loader_minimal
@@ -31,11 +15,8 @@ CMake,nrf52832-dk:nsh
CMake,nrf52832-dk:ostest_tickless
CMake,nrf52832-dk:sdc
CMake,nrf52832-dk:sdc_nimble
-
CMake,nrf52832-mdk:nsh
-
CMake,nrf52832-sparkfun:nsh
-
CMake,nrf52840-dk:cdcacm
CMake,nrf52840-dk:composite
CMake,nrf52840-dk:highpri
@@ -47,18 +28,9 @@ CMake,nrf52840-dk:rndis
CMake,nrf52840-dk:sdc
CMake,nrf52840-dk:sdc_nimble
CMake,nrf52840-dk:sx127x
-
CMake,nrf52840-dongle:nsh
CMake,nrf52840-dongle:usbnsh
-
-CMake,nrf52-feather:i2c
-CMake,nrf52-feather:nsh
-CMake,nrf52-feather:userleds
-
-CMake,thingy52:nsh
-
CMake,nrf5340-audio-dk:nsh_cpuapp
-
CMake,nrf5340-dk:adc_cpuapp
CMake,nrf5340-dk:buttons_cpuapp
CMake,nrf5340-dk:composite_cpuapp
@@ -77,16 +49,13 @@ CMake,nrf5340-dk:rptun_cpunet
CMake,nrf5340-dk:sdc_cpunet
CMake,nrf5340-dk:sdc_nimble_cpunet
CMake,nrf5340-dk:timer_cpuapp
-
-CMake,thingy53:composite_cpuapp
-CMake,thingy53:nsh_cpuapp
-CMake,thingy53:nsh_cpunet
-
CMake,nrf9160-dk:mcuboot_app
CMake,nrf9160-dk:mcuboot_loader
CMake,nrf9160-dk:miniboot_s
CMake,nrf9160-dk:modem_ns
CMake,nrf9160-dk:nsh
CMake,nrf9160-dk:ostest_tickless
-
-CMake,qemu-armv7a:full
+CMake,thingy52:nsh
+CMake,thingy53:composite_cpuapp
+CMake,thingy53:nsh_cpuapp
+CMake,thingy53:nsh_cpunet
diff --git a/tools/ci/testlist/arm-nxp.dat b/tools/ci/testlist/arm-nxp.dat
new file mode 100644
index 00000000000..393c80253a6
--- /dev/null
+++ b/tools/ci/testlist/arm-nxp.dat
@@ -0,0 +1,15 @@
+/arm/kinetis,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/kl,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/lc823450,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/lpc17xx_40xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/lpc214x,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/lpc2378,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/lpc31xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/lpc43xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/lpc54xx,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/s32k1xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+-lpcxpresso-lpc1768:thttpd
+-olimex-lpc1766stk:slip-httpd
+-olimex-lpc1766stk:thttpd-nxflat
+-zkit-arm-1769:thttpd
diff --git a/tools/ci/testlist/arm-other.dat b/tools/ci/testlist/arm-other.dat
new file mode 100644
index 00000000000..e9da0b33f57
--- /dev/null
+++ b/tools/ci/testlist/arm-other.dat
@@ -0,0 +1,45 @@
+/arm/a1x,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/am335x,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/am67,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/at32,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/c5471,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/csk6,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/dm320,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/efm32,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/eoss3,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/fvp-v8r-aarch32,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/gd32f4,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/ht32f491x3,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/max326xx/*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/moxart/*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/mps/mps2*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/mps/mps3-an547/configs/ap,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/mps/mps3-an547/configs/bl,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/mps/mps3-an547/configs/clang,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/mps/mps3-an547/configs/nsh,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/mps/mps3-an547/configs/picostest,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/n32h7,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/nuc1xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/phy62xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/qemu,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/ra4,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/ra8m1,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/rtl8720f,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/rtl8721dx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/rtl8721f,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/rtl8730e,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/str71x,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/tlsr82,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/xmc4,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+-moxa:nsh
+-tlsr8278adk80d:nsh
+
+# Boards build by CMake
+
+CMake,arduino-nano-33ble-rev2:nsh
+CMake,arduino-nano-33ble-rev2:usbnsh
+CMake,arduino-nano-33ble:nsh
+CMake,arduino-nano-33ble:usbnsh
+CMake,mps3-an547:gcov
+CMake,qemu-armv7a:full
diff --git a/tools/ci/testlist/arm-rp2xxx.dat b/tools/ci/testlist/arm-rp2xxx.dat
new file mode 100644
index 00000000000..040da35e3cb
--- /dev/null
+++ b/tools/ci/testlist/arm-rp2xxx.dat
@@ -0,0 +1,8 @@
+/arm/rp2040,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/rp23xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+-pimoroni-pico-2-plus:xipfs-nxflat
+
+# Boards build by CMake
+
+CMake,raspberrypi-pico:bmp280
diff --git a/tools/ci/testlist/arm-07.dat b/tools/ci/testlist/arm-sam.dat
similarity index 80%
rename from tools/ci/testlist/arm-07.dat
rename to tools/ci/testlist/arm-sam.dat
index b096c2bc374..d5e3d843e5d 100644
--- a/tools/ci/testlist/arm-07.dat
+++ b/tools/ci/testlist/arm-sam.dat
@@ -1,11 +1,5 @@
-/arm/s32k1xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
/arm/sam34,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
/arm/sama5,CONFIG_ARM_TOOLCHAIN_GNU_EABI
-
/arm/samd2l2,CONFIG_ARM_TOOLCHAIN_CLANG
-
/arm/samd5e5,CONFIG_ARM_TOOLCHAIN_CLANG
-
/arm/samv7,CONFIG_ARM_TOOLCHAIN_GNU_EABI
diff --git a/tools/ci/testlist/arm-stm32-other.dat
b/tools/ci/testlist/arm-stm32-other.dat
new file mode 100644
index 00000000000..08f47bdde12
--- /dev/null
+++ b/tools/ci/testlist/arm-stm32-other.dat
@@ -0,0 +1,28 @@
+/arm/stm32c0/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f7,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f7/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32h5,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32n*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+# Boards build by CMake
+
+CMake,nucleo-f722ze:can
+CMake,nucleo-f722ze:cansock
+CMake,nucleo-f722ze:composite
+CMake,nucleo-f746zg:evalos
+CMake,nucleo-f746zg:nsh
+CMake,nucleo-f746zg:pysim
+CMake,nucleo-f767zi:evalos
+CMake,nucleo-f767zi:netnsh
+CMake,nucleo-f767zi:nsh
+CMake,steval-eth001v1:foc_b16
+CMake,steval-eth001v1:foc_f32
+CMake,steval-eth001v1:nsh
+CMake,stm32f746-ws:nsh
+CMake,stm32f746g-disco:audio
+CMake,stm32f746g-disco:fb
+CMake,stm32f746g-disco:netnsh
+CMake,stm32f746g-disco:nsh
+CMake,stm32f769i-disco:netnsh
+CMake,stm32f769i-disco:nsh
+CMake,stm32f777zit6-meadow:nsh
diff --git a/tools/ci/testlist/arm-stm32f0-f3.dat
b/tools/ci/testlist/arm-stm32f0-f3.dat
new file mode 100644
index 00000000000..518c4077aa7
--- /dev/null
+++ b/tools/ci/testlist/arm-stm32f0-f3.dat
@@ -0,0 +1,82 @@
+/arm/stm32f0/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f1/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f1/nucleo-f1*,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f1/olimex-*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f1/olimexino-stm32,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f1/shenzhou,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f1/stm3210e-eval,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f1/stm32_tiny,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f1/stm32butterfly2,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f1/stm32f103-minimum,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f1/stm32vldiscovery,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f1/viewtool-stm32f107,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f2/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f2/nucleo-f2*,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f2/olimex-*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f2/photon,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f2/stm3220g-eval,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f3/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f3/nucleo-f30*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f3/nucleo-f33*,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f3/stm32f334-disco,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f3/stm32f3discovery,CONFIG_ARM_TOOLCHAIN_CLANG
+
+-shenzhou:thttpd
+
+# Boards build by CMake
+
+CMake,nucleo-f072rb:nsh
+CMake,nucleo-f091rc:nsh
+CMake,nucleo-f091rc:sx127x
+CMake,nucleo-f103rb:adc
+CMake,nucleo-f103rb:ihm07m1_b16
+CMake,nucleo-f103rb:nsh
+CMake,nucleo-f103rb:pwm
+CMake,nucleo-f103rb:qenco
+CMake,nucleo-f207zg:adc
+CMake,nucleo-f207zg:nsh
+CMake,nucleo-f207zg:pwm
+CMake,nucleo-f302r8:cansock
+CMake,nucleo-f302r8:highpri
+CMake,nucleo-f302r8:ihm07m1_b16
+CMake,nucleo-f302r8:ihm07m1_f32
+CMake,nucleo-f302r8:nsh
+CMake,nucleo-f302r8:qenco
+CMake,nucleo-f303re:adc
+CMake,nucleo-f303re:hello
+CMake,nucleo-f303re:nsh
+CMake,nucleo-f303re:pwm
+CMake,nucleo-f303ze:adc
+CMake,nucleo-f303ze:nsh
+CMake,nucleo-f334r8:adc
+CMake,nucleo-f334r8:highpri
+CMake,nucleo-f334r8:nsh
+CMake,nucleo-f334r8:spwm1
+CMake,nucleo-f334r8:spwm2
+CMake,stm32_tiny:nsh
+CMake,stm32_tiny:usbnsh
+CMake,stm32butterfly2:nsh
+CMake,stm32butterfly2:nshnet
+CMake,stm32butterfly2:nshusbdev
+CMake,stm32butterfly2:nshusbhost
+CMake,stm32f051-discovery:nsh
+CMake,stm32f072-discovery:nsh
+CMake,stm32f103-minimum:apds9960
+CMake,stm32f103-minimum:audio_tone
+CMake,stm32f103-minimum:buttons
+CMake,stm32f103-minimum:hello
+CMake,stm32f103-minimum:lcd1602
+CMake,stm32f103-minimum:mcp2515
+CMake,stm32f103-minimum:nrf24
+CMake,stm32f103-minimum:nsh
+CMake,stm32f103-minimum:pwm
+CMake,stm32f103-minimum:rfid-rc522
+CMake,stm32f103-minimum:rgbled
+CMake,stm32f103-minimum:usbnsh
+CMake,stm32f103-minimum:userled
+CMake,stm32f103-minimum:veml6070
+CMake,stm32f334-disco:buckboost
+CMake,stm32f334-disco:nsh
+CMake,stm32f334-disco:powerled
+CMake,stm32f3discovery:nsh
+CMake,stm32f3discovery:usbnsh
diff --git a/tools/ci/testlist/arm-stm32f4-1.dat
b/tools/ci/testlist/arm-stm32f4-1.dat
new file mode 100644
index 00000000000..8289dd62230
--- /dev/null
+++ b/tools/ci/testlist/arm-stm32f4-1.dat
@@ -0,0 +1,24 @@
+/arm/stm32f4/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f4/nucleo-f4*,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f4/olimex-*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+# Boards build by CMake
+
+CMake,nucleo-f401re:fb
+CMake,nucleo-f401re:nsh
+CMake,nucleo-f410rb:nsh
+CMake,nucleo-f411re:mcp2515-extid
+CMake,nucleo-f411re:nsh
+CMake,nucleo-f412zg:nsh
+CMake,nucleo-f429zi:netnsh
+CMake,nucleo-f429zi:nsh
+CMake,nucleo-f446re:adc
+CMake,nucleo-f446re:cansock
+CMake,nucleo-f446re:dac
+CMake,nucleo-f446re:gpio
+CMake,nucleo-f446re:ihm08m1_b16
+CMake,nucleo-f446re:ihm08m1_f32
+CMake,nucleo-f446re:nsh
+CMake,nucleo-f446re:pwm
+CMake,nucleo-f446re:qenco
+CMake,nucleo-f446re:systemview
diff --git a/tools/ci/testlist/arm-stm32f4-2.dat
b/tools/ci/testlist/arm-stm32f4-2.dat
new file mode 100644
index 00000000000..881163ba7d9
--- /dev/null
+++ b/tools/ci/testlist/arm-stm32f4-2.dat
@@ -0,0 +1,24 @@
+/arm/stm32f4/omnibusf4,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f4/stm3240g-eval,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32f4/stm32f411-minimum,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f4/stm32f411e-disco,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f4/stm32f429i-disco,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32f4/stm32f4discovery,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+-stm3240g-eval:knxwm
+-stm32f4discovery:cxxtest
+-stm32f4discovery:winbuild
+
+# Boards build by CMake
+
+CMake,stm32f411-minimum:composite
+CMake,stm32f411-minimum:nsh
+CMake,stm32f411-minimum:spifsnsh
+CMake,stm32f411-minimum:usbmsc
+CMake,stm32f411e-disco:nsh
+CMake,stm32f429i-disco:adc
+CMake,stm32f429i-disco:extflash
+CMake,stm32f429i-disco:highpri
+CMake,stm32f429i-disco:nsh
+CMake,stm32f429i-disco:usbmsc
+CMake,stm32f429i-disco:usbnsh
diff --git a/tools/ci/testlist/arm-stm32h7.dat
b/tools/ci/testlist/arm-stm32h7.dat
new file mode 100644
index 00000000000..016e0afe2b8
--- /dev/null
+++ b/tools/ci/testlist/arm-stm32h7.dat
@@ -0,0 +1,24 @@
+/arm/stm32h7,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32h7/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+# Boards build by CMake
+
+CMake,nucleo-h743zi2:netnsh
+CMake,nucleo-h743zi2:nsh
+CMake,nucleo-h743zi2:pysim
+CMake,nucleo-h743zi2:socketcan
+CMake,nucleo-h743zi:composite
+CMake,nucleo-h743zi:mcuboot-app
+CMake,nucleo-h743zi:mcuboot-loader
+CMake,nucleo-h743zi:netnsh
+CMake,nucleo-h743zi:nsh
+CMake,nucleo-h743zi:otg_fs_host
+CMake,nucleo-h743zi:pwm
+CMake,nucleo-h743zi:rndis
+CMake,nucleo-h745zi:nsh_cm4
+CMake,nucleo-h745zi:nsh_cm4_rptun
+CMake,nucleo-h745zi:nsh_cm7
+CMake,nucleo-h745zi:nsh_cm7_rptun
+CMake,stm32h745i-disco:netnsh
+CMake,stm32h745i-disco:nsh
+CMake,stm32h745i-disco:touchtest
diff --git a/tools/ci/testlist/arm-stm32l-u-g.dat
b/tools/ci/testlist/arm-stm32l-u-g.dat
new file mode 100644
index 00000000000..985c235440a
--- /dev/null
+++ b/tools/ci/testlist/arm-stm32l-u-g.dat
@@ -0,0 +1,43 @@
+/arm/stm32g0/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32g0/nucleo-g*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32g4/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32g4/nucleo-g*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32l*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32l0/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32l0/nucleo-l*,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32l1/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32l1/nucleo-l*,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32l1/stm32ldiscovery,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32l4/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32l4/nucleo-l*,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32l5/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32l5/nucleo-l*,CONFIG_ARM_TOOLCHAIN_CLANG
+/arm/stm32u*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32u5/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32w*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/stm32wb/[a-m]*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+# Boards build by CMake
+
+CMake,b-l072z-lrwan1:adc
+CMake,b-l072z-lrwan1:nsh
+CMake,b-l072z-lrwan1:sx127x
+CMake,nucleo-g070rb:nsh
+CMake,nucleo-g071rb:nsh
+CMake,nucleo-g431kb:comp
+CMake,nucleo-g431kb:nsh
+CMake,nucleo-g431kb:pwm
+CMake,nucleo-g431rb:adc
+CMake,nucleo-g431rb:cansock
+CMake,nucleo-g431rb:cordic
+CMake,nucleo-g431rb:ihm16m1_b16
+CMake,nucleo-g431rb:ihm16m1_f32
+CMake,nucleo-g431rb:nsh
+CMake,nucleo-g431rb:pwm
+CMake,nucleo-g431rb:qenco
+CMake,nucleo-g474re:nsh
+CMake,nucleo-l073rz:nsh
+CMake,nucleo-l073rz:sx127x
+CMake,nucleo-l152re:nsh
+CMake,stm32g071b-disco:nsh
+CMake,stm32l0538-disco:nsh
diff --git a/tools/ci/testlist/arm-ti.dat b/tools/ci/testlist/arm-ti.dat
new file mode 100644
index 00000000000..b2cca715f0b
--- /dev/null
+++ b/tools/ci/testlist/arm-ti.dat
@@ -0,0 +1,8 @@
+/arm/cxd56xx,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/rm57,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/tiva,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+/arm/tms570,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+-eagle100:thttpd
+-launchxl-cc1310:nsh
+-tms570ls31x-usb-kit:nsh