.target_test_template: image: $TARGET_TEST_ENV_IMAGE extends: - .before_script:fetch:target_test stage: target_test timeout: 1 hour dependencies: [] cache: # Usually do not need submodule-cache in target_test - key: pip-cache paths: - .cache/pip policy: pull after_script: - python tools/ci/artifacts_handler.py upload --type logs junit_reports .pytest_template: extends: - .target_test_template artifacts: when: always paths: - XUNIT_RESULT.xml - pytest_embedded_log/ reports: junit: XUNIT_RESULT.xml expire_in: 1 week script: - retry_failed git clone $KNOWN_FAILURE_CASES_REPO known_failure_cases # get runner env config file - retry_failed git clone $TEST_ENV_CONFIG_REPO - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs # using runner tags as markers to filter the test cases # Runner tags are comma separated, replace the comma with " and " for markers - job_tags=$(python tools/ci/python_packages/gitlab_api.py get_job_tags $CI_PROJECT_ID --job_id $CI_JOB_ID) - markers=$(echo $job_tags | sed -e "s/,/ and /g") - if [ -n "$BUILD_JOB_NAME" ]; then job_name=$BUILD_JOB_NAME; else job_name=${BUILD_JOB_PREFIX}$(python tools/ci/ci_get_mr_info.py target_in_tags $job_tags); fi - run_cmd python tools/ci/artifacts_handler.py download --job-name "$job_name" --type build_dir_without_map_and_elf_files - if [ -n "$REQUIRES_ELF_FILES" ]; then run_cmd python tools/ci/artifacts_handler.py download --job-name "$job_name" --type map_and_elf_files; fi - run_cmd pytest $TEST_DIR -m \"${markers}\" --junitxml=XUNIT_RESULT.xml --ignore-result-files known_failure_cases/known_failure_cases.txt --parallel-count ${CI_NODE_TOTAL:-1} --parallel-index ${CI_NODE_INDEX:-1} ${PYTEST_EXTRA_FLAGS} --app-info-filepattern \"list_job_*.txt\" .pytest_examples_dir_template: extends: .pytest_template variables: TEST_DIR: examples BUILD_JOB_PREFIX: build_pytest_examples_ .pytest_examples_dir_jtag_template: extends: .pytest_examples_dir_template needs: - job: build_pytest_examples_jtag artifacts: false variables: BUILD_JOB_NAME: build_pytest_examples_jtag REQUIRES_ELF_FILES: "1" PYTEST_EXTRA_FLAGS: "--log-cli-level DEBUG" pytest_examples_esp32_generic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, generic ] parallel: 3 pytest_examples_esp32_esp32eco3: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, esp32eco3 ] pytest_examples_esp32_ir_transceiver: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, ir_transceiver ] pytest_examples_esp32_twai_transceiver: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, twai_transceiver ] pytest_examples_esp32_twai_network: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, twai_network ] pytest_examples_esp32_jtag: extends: - .pytest_examples_dir_jtag_template - .rules:test:example_test-esp32 tags: [ esp32, jtag ] pytest_examples_esp32_ccs811: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, ccs811 ] pytest_examples_esp32_sdio: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-sdio needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, sdio_master_slave ] pytest_examples_esp32s2_generic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s2 needs: - job: build_pytest_examples_esp32s2 artifacts: false tags: [ esp32s2, generic ] parallel: 3 pytest_examples_esp32s2_jtag: extends: - .pytest_examples_dir_jtag_template - .rules:test:example_test-esp32s2 tags: [ esp32s2, jtag ] pytest_examples_esp32s3_generic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s3 needs: - job: build_pytest_examples_esp32s3 artifacts: false tags: [ esp32s3, generic ] parallel: 3 pytest_examples_esp32s3_usb_serial_jtag: extends: - .pytest_examples_dir_jtag_template - .rules:test:example_test-esp32s3 tags: [ esp32s3, usb_serial_jtag ] pytest_examples_esp32s3_f4r8: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s3 needs: - job: build_pytest_examples_esp32s3 artifacts: false tags: [ esp32s3, MSPI_F4R8 ] pytest_examples_esp32c2_generic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c2 needs: - job: build_pytest_examples_esp32c2 artifacts: false tags: [ esp32c2, generic, xtal_40mhz ] parallel: 3 pytest_examples_esp32c2_jtag: extends: - .pytest_examples_dir_jtag_template - .rules:test:example_test-esp32c2 tags: [ esp32c2, jtag ] pytest_examples_esp32c3_generic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3 needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, generic ] parallel: 3 pytest_examples_esp32c3_usb_serial_jtag: extends: - .pytest_examples_dir_jtag_template - .rules:test:example_test-esp32c3 tags: [ esp32c3, usb_serial_jtag ] pytest_examples_esp32c3_flash_suspend: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3 needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, flash_suspend ] pytest_examples_esp32c6_generic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c6 needs: - job: build_pytest_examples_esp32c6 artifacts: false tags: [ esp32c6, generic ] pytest_examples_esp32h2_generic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32h2 needs: - job: build_pytest_examples_esp32h2 artifacts: false tags: [ esp32h2, generic ] pytest_examples_esp32_ethernet_ota: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-ethernet needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, ethernet_ota ] pytest_examples_esp32_wifi_high_traffic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-wifi needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, wifi_high_traffic ] pytest_examples_esp32_flash_encryption_wifi_high_traffic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-include_nightly_run-rule needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, flash_encryption_wifi_high_traffic ] pytest_examples_esp32c3_flash_encryption_wifi_high_traffic: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3-include_nightly_run-rule needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, flash_encryption_wifi_high_traffic ] pytest_examples_esp32_ethernet: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-ethernet needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, ethernet] pytest_examples_esp32_ethernet_httpbin: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-ethernet needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, httpbin] pytest_examples_esp32_8mb_flash: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, ethernet_flash_8m ] pytest_examples_esp32_wifi_ap: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-wifi needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, wifi_ap ] pytest_examples_esp32c3_wifi_ap: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3-wifi needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, wifi_ap ] pytest_examples_esp32s3_wifi_ap: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s3-wifi needs: - job: build_pytest_examples_esp32s3 artifacts: false tags: [ esp32s3, wifi_ap ] pytest_examples_esp32s2_wifi_ap: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s2-wifi needs: - job: build_pytest_examples_esp32s2 artifacts: false tags: [ esp32s2, wifi_ap ] pytest_examples_esp32c2_wifi_ap: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c2-wifi needs: - job: build_pytest_examples_esp32c2 artifacts: false tags: [ esp32c2, wifi_ap, xtal_40mhz ] pytest_examples_esp32c2_26m_wifi_ap: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c2-wifi needs: - job: build_pytest_examples_esp32c2 artifacts: false tags: [ esp32c2, wifi_ap, xtal_26mhz ] pytest_examples_esp32c6_wifi_ap: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c6-wifi needs: - job: build_pytest_examples_esp32c6 artifacts: false tags: [ esp32c6, wifi_ap ] pytest_examples_esp32_wifi_router: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-wifi needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, wifi_router ] pytest_examples_esp32c3_wifi_router: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3-wifi needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, wifi_router ] pytest_examples_esp32s3_wifi_router: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s3-wifi needs: - job: build_pytest_examples_esp32s3 artifacts: false tags: [ esp32s3, wifi_router ] pytest_examples_esp32s2_wifi_router: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s2-wifi needs: - job: build_pytest_examples_esp32s2 artifacts: false tags: [ esp32s2, wifi_router ] pytest_examples_esp32c2_wifi_router: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c2-wifi needs: - job: build_pytest_examples_esp32c2 artifacts: false tags: [ esp32c2, wifi_router, xtal_40mhz ] pytest_examples_esp32c2_26m_wifi_router: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c2-wifi needs: - job: build_pytest_examples_esp32c2 artifacts: false tags: [ esp32c2, wifi_router, xtal_26mhz ] pytest_examples_esp32c6_wifi_router: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c6-wifi needs: - job: build_pytest_examples_esp32c6 artifacts: false tags: [ esp32c6, wifi_router ] pytest_examples_esp32_wifi_iperf: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-wifi needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, Example_ShieldBox_Basic ] pytest_examples_esp32_wifi_wlan: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-wifi needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, wifi_wlan ] pytest_examples_esp32_ethernet_router: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-ethernet needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, ethernet_router ] pytest_examples_esp32_ethernet_vlan: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-ethernet needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, ethernet_vlan ] pytest_examples_esp32_ethernet_ip101: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, ip101 ] pytest_examples_esp32_ethernet_bridge: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, eth_w5500 ] variables: PYTEST_EXTRA_FLAGS: "--dev-passwd ${ETHERNET_TEST_PASSWORD} --dev-user ${ETHERNET_TEST_USER}" pytest_examples_esp32_flash_encryption: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, flash_encryption ] pytest_examples_esp32_wifi_two_dut: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-wifi needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, wifi_two_dut ] pytest_examples_esp32c3_wifi_two_dut: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3-wifi needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, wifi_two_dut ] pytest_examples_esp32s3_wifi_two_dut: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s3-wifi needs: - job: build_pytest_examples_esp32s3 artifacts: false tags: [ esp32s3, wifi_two_dut ] pytest_examples_esp32c2_wifi_two_dut: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c2-wifi needs: - job: build_pytest_examples_esp32c2 artifacts: false tags: [ esp32c2, wifi_two_dut, xtal_26mhz ] pytest_examples_esp32c3_flash_encryption: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3 needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, flash_encryption ] pytest_examples_esp32c3_nvs_encr_hmac: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3-nvs_encr_hmac needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, nvs_encr_hmac ] pytest_examples_esp32s2_usb_device: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s2-usb needs: - job: build_pytest_examples_esp32s2 artifacts: false tags: [ esp32s2, usb_device ] pytest_examples_esp32_sdmmc: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, sdcard_sdmode ] pytest_examples_esp32_sdspi: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-sdio needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, sdcard_spimode ] pytest_examples_esp32s2_sdspi: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s2-sdio needs: - job: build_pytest_examples_esp32s2 artifacts: false tags: [ esp32s2, sdcard_spimode ] pytest_examples_esp32c3_sdspi: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3-sdio needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, sdcard_spimode ] pytest_examples_esp32_extflash: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32 needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, external_flash ] pytest_examples_esp32_adc: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32-adc needs: - job: build_pytest_examples_esp32 artifacts: false tags: [ esp32, adc ] pytest_examples_esp32s2_adc: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s2-adc needs: - job: build_pytest_examples_esp32s2 artifacts: false tags: [ esp32s2, adc ] pytest_examples_esp32s3_adc: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s3-adc needs: - job: build_pytest_examples_esp32s3 artifacts: false tags: [ esp32s3, adc ] pytest_examples_esp32c3_adc: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c3-adc needs: - job: build_pytest_examples_esp32c3 artifacts: false tags: [ esp32c3, adc ] pytest_examples_esp32c2_adc: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c2-adc needs: - job: build_pytest_examples_esp32c2 artifacts: false tags: [ esp32c2, adc, xtal_26mhz] pytest_examples_esp32c6_adc: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32c6-adc needs: - job: build_pytest_examples_esp32c6 artifacts: false tags: [ esp32c6, adc ] pytest_examples_esp32h2_adc: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32h2-adc needs: - job: build_pytest_examples_esp32h2 artifacts: false tags: [ esp32h2, adc ] pytest_examples_esp32s3_emmc: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32s3 needs: - job: build_pytest_examples_esp32s3 artifacts: false tags: [ esp32s3, emmc ] .pytest_components_dir_template: extends: .pytest_template variables: TEST_DIR: components BUILD_JOB_PREFIX: build_pytest_components_ pytest_components_esp32_generic: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, generic ] parallel: 7 pytest_components_esp32_generic_multi_device: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, generic_multi_device ] pytest_components_esp32_wifi_two_dut: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, wifi_two_dut ] pytest_components_esp32_adc: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32-adc needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, adc ] pytest_components_esp32_sdio: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32-sdio needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, sdio_master_slave ] pytest_components_esp32_esp32c6_sdio: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32-sdio needs: - job: build_pytest_components_esp32 artifacts: false - job: build_pytest_components_esp32c6 artifacts: false tags: [ esp32c6, sdio_multidev_32_c6 ] script: - retry_failed git clone $KNOWN_FAILURE_CASES_REPO known_failure_cases # get runner env config file - retry_failed git clone $TEST_ENV_CONFIG_REPO - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs # using runner tags as markers to filter the test cases # Runner tags are comma separated, replace the comma with " and " for markers - job_tags=$(python tools/ci/python_packages/gitlab_api.py get_job_tags $CI_PROJECT_ID --job_id $CI_JOB_ID) - markers=$(echo $job_tags | sed -e "s/,/ and /g") # download the artifacts, requires esp32 and esp32c6 chips - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_components_esp32" - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_components_esp32c6" - run_cmd pytest $TEST_DIR -m \"${markers}\" --junitxml=XUNIT_RESULT.xml --ignore-result-files known_failure_cases/known_failure_cases.txt --parallel-count ${CI_NODE_TOTAL:-1} --parallel-index ${CI_NODE_INDEX:-1} ${PYTEST_EXTRA_FLAGS} --app-info-filepattern \"list_job_*.txt\" pytest_components_esp32_ip101: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, ip101 ] pytest_components_esp32_lan8720: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, eth_lan8720 ] pytest_components_esp32_rtl8201: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, eth_rtl8201 ] pytest_components_esp32_w5500: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, eth_w5500 ] pytest_components_esp32_ksz8851snl: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, eth_ksz8851snl ] pytest_components_esp32_dm9051: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, eth_dm9051 ] pytest_components_esp32_ksz8041: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, eth_ksz8041 ] pytest_components_esp32_dp83848: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, eth_dp83848 ] pytest_components_esp32_ethernet: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, ethernet ] pytest_components_esp32_flash_encryption: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, flash_encryption ] pytest_components_esp32_flash_multi: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32-flash_multi needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, flash_multi ] pytest_components_esp32_xtal32k: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, xtal32k ] pytest_components_esp32_no32kXtal: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, no32kXtal ] pytest_components_esp32_rs485_multi: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, multi_dut_modbus_rs485 ] pytest_components_esp32_psramv0: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, psramv0 ] pytest_components_esp32s2_generic: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s2 needs: - job: build_pytest_components_esp32s2 artifacts: false tags: [ esp32s2, generic ] parallel: 5 pytest_components_esp32s2_generic_multi_device: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s2 needs: - job: build_pytest_components_esp32s2 artifacts: false tags: [ esp32s2, generic_multi_device ] pytest_components_esp32s2_adc: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s2-adc needs: - job: build_pytest_components_esp32s2 artifacts: false tags: [ esp32s2, adc ] pytest_components_esp32s2_flash_multi: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s2-flash_multi needs: - job: build_pytest_components_esp32s2 artifacts: false tags: [ esp32s2, flash_multi ] pytest_components_esp32s3_generic: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, generic ] parallel: 5 pytest_components_esp32s3_generic_multi_device: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, generic_multi_device ] pytest_components_esp32s3_adc: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3-adc needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, adc ] pytest_components_esp32s3_octal_psram: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, octal_psram ] pytest_components_esp32s3_quad_psram: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, quad_psram ] pytest_components_esp32s3_flash_encryption_f4r8: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, flash_encryption_f4r8 ] pytest_components_esp32s3_flash_encryption_f8r8: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, flash_encryption_f8r8 ] pytest_components_esp32s3_flash_multi: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3-flash_multi needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, flash_multi ] pytest_components_esp32s3_mspi_f4r4: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, MSPI_F4R4 ] pytest_components_esp32s3_mspi_f4r8: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, MSPI_F4R8 ] pytest_components_esp32s3_mspi_f8r8: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, MSPI_F8R8 ] pytest_components_esp32s3_usb_serial_jtag: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3 needs: - build_pytest_components_esp32s3 tags: [ esp32s3, usb_serial_jtag ] pytest_components_esp32c2_generic: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c2 needs: - job: build_pytest_components_esp32c2 artifacts: false tags: [ esp32c2, generic, xtal_40mhz ] parallel: 3 pytest_components_esp32c2_adc: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c2-adc needs: - job: build_pytest_components_esp32c2 artifacts: false tags: [ esp32c2, adc, xtal_26mhz ] pytest_components_esp32c2_generic_multi_device: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c2 needs: - job: build_pytest_components_esp32c2 artifacts: false tags: [ esp32c2, generic_multi_device, xtal_40mhz ] pytest_components_esp32c2_xtal_26mhz: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c2 needs: - job: build_pytest_components_esp32c2 artifacts: false tags: [ esp32c2, generic, xtal_26mhz ] pytest_components_esp32c3_generic: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3 needs: - job: build_pytest_components_esp32c3 artifacts: false tags: [ esp32c3, generic ] parallel: 3 pytest_components_esp32c3_i2c_oled: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3 needs: - job: build_pytest_components_esp32c3 artifacts: false tags: [ esp32c3, i2c_oled ] pytest_components_esp32c3_generic_multi_device: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3 needs: - job: build_pytest_components_esp32c3 artifacts: false tags: [ esp32c3, generic_multi_device ] pytest_components_esp32c3_wifi_two_dut: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3-wifi needs: - job: build_pytest_components_esp32c3 artifacts: false tags: [ esp32c3, wifi_two_dut ] pytest_components_esp32c3_usb_serial_jtag: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3 needs: - build_pytest_components_esp32c3 tags: [ esp32c3, usb_serial_jtag ] pytest_components_esp32s3_wifi_two_dut: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3-wifi needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, wifi_two_dut ] pytest_components_esp32c2_wifi_two_dut: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c2-wifi needs: - job: build_pytest_components_esp32c2 artifacts: false tags: [ esp32c2, wifi_two_dut, xtal_26mhz ] pytest_components_esp32c3_adc: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3-adc needs: - job: build_pytest_components_esp32c3 artifacts: false tags: [ esp32c3, adc ] pytest_components_esp32c3_flash_encryption: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3 needs: - job: build_pytest_components_esp32c3 artifacts: false tags: [ esp32c3, flash_encryption ] pytest_components_esp32c3_nvs_encr_hmac: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3-nvs_encr_hmac needs: - job: build_pytest_components_esp32c3 artifacts: false tags: [ esp32c3, nvs_encr_hmac ] pytest_components_esp32c3_flash_multi: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3-flash_multi needs: - job: build_pytest_components_esp32c3 artifacts: false tags: [ esp32c3, flash_multi ] pytest_components_esp32_sdmmc: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32 needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, sdcard_sdmode ] pytest_components_esp32_sdspi: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32-sdio needs: - job: build_pytest_components_esp32 artifacts: false tags: [ esp32, sdcard_spimode ] pytest_components_esp32s2_sdspi: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s2-sdio needs: - job: build_pytest_components_esp32s2 artifacts: false tags: [ esp32s2, sdcard_spimode ] pytest_components_esp32c3_sdspi: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c3-sdio needs: - job: build_pytest_components_esp32c3 artifacts: false tags: [ esp32c3, sdcard_spimode ] pytest_components_esp32c6_generic: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c6 needs: - job: build_pytest_components_esp32c6 artifacts: false tags: [ esp32c6, generic ] parallel: 2 pytest_components_esp32c6_usb_serial_jtag: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c6 needs: - build_pytest_components_esp32c6 tags: [ esp32c6, usb_serial_jtag ] pytest_components_esp32h2_generic: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32h2 needs: - job: build_pytest_components_esp32h2 artifacts: false tags: [ esp32h2, generic ] parallel: 2 pytest_components_esp32h2_generic_multi_device: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32h2 needs: - job: build_pytest_components_esp32h2 artifacts: false tags: [ esp32h2, generic_multi_device ] pytest_components_esp32h2_adc: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32h2-adc needs: - job: build_pytest_components_esp32h2 artifacts: false tags: [ esp32h2, adc ] pytest_components_esp32h2_ecdsa: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32h2-ecdsa needs: - job: build_pytest_components_esp32h2 artifacts: false tags: [ esp32h2, ecdsa_efuse ] pytest_components_esp32h2_usb_serial_jtag: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32h2 needs: - build_pytest_components_esp32h2 tags: [ esp32h2, usb_serial_jtag ] pytest_components_esp32c6_generic_multi_device: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c6 needs: - job: build_pytest_components_esp32c6 artifacts: false tags: [ esp32c6, generic_multi_device ] pytest_components_esp32c6_adc: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c6-adc needs: - job: build_pytest_components_esp32c6 artifacts: false tags: [ esp32c6, adc ] pytest_components_esp32c6_i154: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32c6-i154 needs: - job: build_pytest_components_esp32c6 artifacts: false tags: [ esp32c6, ieee802154 ] pytest_examples_openthread_br: extends: - .pytest_examples_dir_template - .rules:test:example_test-i154 needs: - job: build_pytest_examples_esp32s3 artifacts: false - job: build_pytest_examples_esp32c6 artifacts: false - job: build_pytest_examples_esp32h2 artifacts: false tags: [ esp32c6, openthread_br ] script: - retry_failed git clone $KNOWN_FAILURE_CASES_REPO known_failure_cases # get runner env config file - retry_failed git clone $TEST_ENV_CONFIG_REPO - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs # using runner tags as markers to filter the test cases # Runner tags are comma separated, replace the comma with " and " for markers - job_tags=$(python tools/ci/python_packages/gitlab_api.py get_job_tags $CI_PROJECT_ID --job_id $CI_JOB_ID) - markers=$(echo $job_tags | sed -e "s/,/ and /g") # download the artifacts, requires s3, c6, h2 chips - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_examples_esp32s3" - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_examples_esp32c6" - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_examples_esp32h2" - run_cmd pytest $TEST_DIR -m \"${markers}\" --junitxml=XUNIT_RESULT.xml --ignore-result-files known_failure_cases/known_failure_cases.txt --parallel-count ${CI_NODE_TOTAL:-1} --parallel-index ${CI_NODE_INDEX:-1} ${PYTEST_EXTRA_FLAGS} --app-info-filepattern \"list_job_*.txt\" pytest_examples_openthread_bbr: extends: - .pytest_examples_dir_template - .rules:test:example_test-i154 needs: - job: build_pytest_examples_esp32s3 artifacts: false - job: build_pytest_examples_esp32c6 artifacts: false - job: build_pytest_examples_esp32h2 artifacts: false tags: [ esp32c6, openthread_bbr ] script: - retry_failed git clone $KNOWN_FAILURE_CASES_REPO known_failure_cases # get runner env config file - retry_failed git clone $TEST_ENV_CONFIG_REPO - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs # using runner tags as markers to filter the test cases # Runner tags are comma separated, replace the comma with " and " for markers - job_tags=$(python tools/ci/python_packages/gitlab_api.py get_job_tags $CI_PROJECT_ID --job_id $CI_JOB_ID) - markers=$(echo $job_tags | sed -e "s/,/ and /g") # download the artifacts, requires s3, c6, h2 chips - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_examples_esp32s3" - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_examples_esp32c6" - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_examples_esp32h2" - run_cmd pytest $TEST_DIR -m \"${markers}\" --junitxml=XUNIT_RESULT.xml --ignore-result-files known_failure_cases/known_failure_cases.txt --parallel-count ${CI_NODE_TOTAL:-1} --parallel-index ${CI_NODE_INDEX:-1} ${PYTEST_EXTRA_FLAGS} --app-info-filepattern \"list_job_*.txt\" pytest_examples_openthread_sleep: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32h2 needs: - job: build_pytest_examples_esp32c6 artifacts: false - job: build_pytest_examples_esp32h2 artifacts: false tags: [ esp32c6, openthread_sleep ] script: - retry_failed git clone $KNOWN_FAILURE_CASES_REPO known_failure_cases # get runner env config file - retry_failed git clone $TEST_ENV_CONFIG_REPO - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs # using runner tags as markers to filter the test cases # Runner tags are comma separated, replace the comma with " and " for markers - job_tags=$(python tools/ci/python_packages/gitlab_api.py get_job_tags $CI_PROJECT_ID --job_id $CI_JOB_ID) - markers=$(echo $job_tags | sed -e "s/,/ and /g") # download the artifacts, requires c6, h2 chips - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_examples_esp32c6" - run_cmd python tools/ci/artifacts_handler.py download --job-name "build_pytest_examples_esp32h2" - run_cmd pytest $TEST_DIR -m \"${markers}\" --junitxml=XUNIT_RESULT.xml --ignore-result-files known_failure_cases/known_failure_cases.txt --parallel-count ${CI_NODE_TOTAL:-1} --parallel-index ${CI_NODE_INDEX:-1} ${PYTEST_EXTRA_FLAGS} --app-info-filepattern \"list_job_*.txt\" pytest_examples_esp32h2_zigbee: extends: - .pytest_examples_dir_template - .rules:test:example_test-esp32h2 needs: - job: build_pytest_examples_esp32h2 artifacts: false tags: [ esp32h2, zigbee_multi_dut ] pytest_components_esp32s3_usb_host: extends: - .pytest_components_dir_template - .rules:test:component_ut-esp32s3-usb needs: - job: build_pytest_components_esp32s3 artifacts: false tags: [ esp32s3, usb_host_flash_disk ] .pytest_test_apps_dir_template: extends: .pytest_template variables: TEST_DIR: tools/test_apps BUILD_JOB_PREFIX: build_pytest_test_apps_ REQUIRES_ELF_FILES: "1" pytest_test_apps_esp32_generic: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32 needs: - job: build_pytest_test_apps_esp32 artifacts: false tags: [ esp32, generic ] pytest_test_apps_esp32_jtag: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32 needs: - job: build_pytest_test_apps_esp32 artifacts: false tags: [ esp32, jtag ] variables: PYTEST_EXTRA_FLAGS: "--log-cli-level DEBUG" pytest_test_apps_esp32_ethernet: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32 needs: - job: build_pytest_test_apps_esp32 artifacts: false tags: [ esp32, ethernet ] pytest_test_apps_esp32s2_generic: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32s2 needs: - job: build_pytest_test_apps_esp32s2 artifacts: false tags: [ esp32s2, generic ] pytest_test_apps_esp32s3_generic: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32s3 needs: - job: build_pytest_test_apps_esp32s3 artifacts: false tags: [ esp32s3, generic ] pytest_test_apps_esp32c2_generic: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32c2 needs: - job: build_pytest_test_apps_esp32c2 artifacts: false tags: [ esp32c2, generic, xtal_40mhz ] pytest_test_apps_esp32c3_generic: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32c3 needs: - job: build_pytest_test_apps_esp32c3 artifacts: false tags: [ esp32c3, generic ] pytest_test_apps_esp32c6_generic: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32c6 needs: - job: build_pytest_test_apps_esp32c6 artifacts: false tags: [ esp32c6, generic ] pytest_test_apps_esp32h2_generic: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32h2 needs: - job: build_pytest_test_apps_esp32h2 artifacts: false tags: [ esp32h2, generic ] pytest_test_apps_esp32s3_mspi_f8r8: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32s3 needs: - job: build_pytest_test_apps_esp32s3 artifacts: false tags: [ esp32s3, MSPI_F8R8 ] pytest_test_apps_esp32s3_mspi_f4r8: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32s3 needs: - job: build_pytest_test_apps_esp32s3 artifacts: false tags: [ esp32s3, MSPI_F4R8 ] pytest_test_apps_esp32s3_mspi_f4r4: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32s3 needs: - job: build_pytest_test_apps_esp32s3 artifacts: false tags: [ esp32s3, MSPI_F4R4 ] pytest_test_apps_esp32s2_wifi_two_dut: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32s2-wifi needs: - job: build_pytest_test_apps_esp32s2 artifacts: false tags: [ esp32s2, wifi_two_dut ] pytest_test_apps_esp32s3_wifi_two_dut: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32s3-wifi needs: - job: build_pytest_test_apps_esp32s3 artifacts: false tags: [ esp32s3, wifi_two_dut ] pytest_test_apps_esp32c2_wifi_two_dut: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32c2-wifi needs: - job: build_pytest_test_apps_esp32c2 artifacts: false tags: [ esp32c2, wifi_two_dut, xtal_26mhz ] pytest_test_apps_esp32c3_wifi_two_dut: extends: - .pytest_test_apps_dir_template - .rules:test:custom_test-esp32c3-wifi needs: - job: build_pytest_test_apps_esp32c3 artifacts: false tags: [ esp32c3, wifi_two_dut]