ci(buildv2): add build/QEMU/Linux jobs for Build system v2

Add the parallel set of CI jobs that exercise the cmakev2 path end-to-end
via the IDF_BUILD_V2 shim. All jobs are gated on the `buildv2` MR label
with `allow_failure: true` so unrelated MRs do not pay for the extra
build matrix.

- `.gitlab/ci/build.yml`: add the buildv2 child build pipeline that
  re-runs the full app build matrix with IDF_BUILD_V2=y, plus the
  Windows buildv2 build job. The generator script injects IDF_BUILD_V2
  and a PIPELINE_COMMIT_SHA suffix into each child job and broadens
  target_test job filters so v1 and buildv2 artifacts upload to distinct
  s3 cache paths and each child pipeline tests its own binary.
- `.gitlab/ci/host-test.yml`: add the QEMU (esp32, esp32c3) and Linux
  pytest buildv2 jobs.
- `.idf_build_apps.toml`: parameterize build_dir with BUILDV2_DIR_SUFFIX
  (set to _v2 only on the buildv2 pipeline).
This commit is contained in:
Sudeep Mohanty
2026-07-01 13:17:25 +02:00
parent aa98b92e25
commit 2d3f8399ee
5 changed files with 254 additions and 12 deletions
+47 -11
View File
@@ -361,7 +361,7 @@ build_docker:
############################
# Host test with test apps #
############################
test_pytest_qemu:
.test_pytest_qemu_template:
extends:
- .host_test_template
artifacts:
@@ -371,15 +371,6 @@ test_pytest_qemu:
- "**/build*/*.bin"
reports:
junit: XUNIT_RESULT.xml
parallel:
matrix:
- IDF_TARGET: "esp32"
INSTALL_EXTRA_TOOLS: "qemu-xtensa"
# Skip Clang + Xtensa tests due to bootloader size issue
IDF_TOOLCHAIN: [gcc]
- IDF_TARGET: "esp32c3"
INSTALL_EXTRA_TOOLS: "qemu-riscv32"
IDF_TOOLCHAIN: [gcc, clang]
script:
- run_cmd idf-ci build run
--build-system cmake
@@ -394,7 +385,20 @@ test_pytest_qemu:
--ignore-result-files ${KNOWN_FAILURE_CASES_FILE_NAME}
--qemu-extra-args \"-global driver=timer.$IDF_TARGET.timg,property=wdt_disable,value=true\"
test_pytest_linux:
test_pytest_qemu:
extends:
- .test_pytest_qemu_template
parallel:
matrix:
- IDF_TARGET: "esp32"
INSTALL_EXTRA_TOOLS: "qemu-xtensa"
# Skip Clang + Xtensa tests due to bootloader size issue
IDF_TOOLCHAIN: [gcc]
- IDF_TARGET: "esp32c3"
INSTALL_EXTRA_TOOLS: "qemu-riscv32"
IDF_TOOLCHAIN: [gcc, clang]
.test_pytest_linux_template:
extends:
- .host_test_template
artifacts:
@@ -418,6 +422,10 @@ test_pytest_linux:
--junitxml=XUNIT_RESULT.xml
--ignore-result-files ${KNOWN_FAILURE_CASES_FILE_NAME}
test_pytest_linux:
extends:
- .test_pytest_linux_template
test_pytest_macos:
extends:
- .host_test_template
@@ -524,6 +532,34 @@ pytest_buildv2_system:
--junitxml ${CI_PROJECT_DIR}/XUNIT_RESULT.xml
--ignore-result-files ${KNOWN_FAILURE_CASES_FILE_NAME}
# Run QEMU tests with the cmakev2 build system (via the IDF_BUILD_V2 shim).
# Triggered only when the 'buildv2' MR label is set.
test_pytest_qemu_buildv2:
extends:
- .test_pytest_qemu_template
- .rules:labels:buildv2
allow_failure: true
parallel:
matrix:
- IDF_TARGET: "esp32"
INSTALL_EXTRA_TOOLS: "qemu-xtensa"
IDF_TOOLCHAIN: [gcc]
- IDF_TARGET: "esp32c3"
INSTALL_EXTRA_TOOLS: "qemu-riscv32"
IDF_TOOLCHAIN: [gcc]
variables:
IDF_BUILD_V2: "1"
# Run Linux-target pytest tests with the cmakev2 build system (via the
# IDF_BUILD_V2 shim). Triggered only when the 'buildv2' MR label is set.
test_pytest_linux_buildv2:
extends:
- .test_pytest_linux_template
- .rules:labels:buildv2
allow_failure: true
variables:
IDF_BUILD_V2: "1"
pytest_build_system_macos:
extends:
- .test_build_system_template