mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
d4ab79259a
Conflicts: - spiffs submodules version and hash changed to 0.2-221-gf5e26c4e9331 - protobuf-c submodule version and hash changed to v1.3.0 - ci files moved from tools/ci/config/ into .gitlab/ci/ in v4.4, so host-test.yml and rules.yml were changed accordingly in tools/ci/config/. - added patterns-submodule to rules.yml, because they were also added in v4.4 - removed pytest dependency This adds SBOM information for submodules, which are not managed by Espressif. Meaning there is no fork for them in the espressif namespace. Other submodules should add sbom.yml manifest file to the root of their git repository. The SBOM information for submodules is stored in the .gitmodules file. Each SBOM related variable has the "sbom-" prefix and the following variables may be used: sbom-version: submodule version sbom-cpe: CPE record if available in NVD. This will be used by the SBOM tool to check for possible submodule vulnerabilities. The version in the CPE can be replaced with the "{}" placeholder, which will be replaced by the "sbom-version" value from above. sbom-supplier: Person or organization who is providing the submodule. It has to start with "Person:" or "Organization:" prefix as required by the SPDX-2.2 standard. sbom-url: URL to the project if exists, e.g. github. sbom-description: Project description. sbom-hash: Submodule SHA as recorded in the git-tree. This field is used by CI to check that the submodule checkout hash and info in .gitmodules are in sync. IOW if submodule is updated and it has SBOM info in .gitmodules, the .gitmodules has to be updated too. The test is part of this commit. The checkout has of the submodule can be found by using "git submodule status". Example for micro-ecc submodule ---8<--- [submodule "components/bootloader/subproject/components/micro-ecc/micro-ecc"] path = components/bootloader/subproject/components/micro-ecc/micro-ecc url = ../../kmackay/micro-ecc.git sbom-version = 1.0 sbom-cpe = cpe:2.3🅰️micro-ecc_project:micro-ecc:{}:*:*:*:*:*:*:* sbom-supplier = Person: Ken MacKay sbom-url = https://github.com/kmackay/micro-ecc sbom-description = A small and fast ECDH and ECDSA implementation for 8-bit, 32-bit, and 64-bit processors sbom-hash = d037ec89546fad14b5c4d5456c2e23a71e554966 ---8<--- Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
353 lines
11 KiB
YAML
353 lines
11 KiB
YAML
.host_test_template:
|
|
extends: .rules:labels:host_test
|
|
stage: host_test
|
|
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
|
|
tags:
|
|
- host_test
|
|
dependencies: []
|
|
|
|
.host_fuzzer_test_template:
|
|
extends:
|
|
- .host_test_template
|
|
- .rules:labels:fuzzer_test-weekend_test-only
|
|
image: $CI_DOCKER_REGISTRY/afl-fuzzer-test
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- ${FUZZER_TEST_DIR}/out/crashes
|
|
- ${FUZZER_TEST_DIR}/fuzz_output.log
|
|
expire_in: 1 week
|
|
script:
|
|
- export AFL_I_DONT_CARE_ABOUT_MISSING_CRASHES=1 && export AFL_SKIP_CPUFREQ=1
|
|
- cd ${FUZZER_TEST_DIR}
|
|
# run AFL fuzzer for one hour
|
|
- ( ( make ${FUZZER_PARAMS} fuzz | tee fuzz_output.log | grep -v '\(Fuzzing test case\|Entering queue cycle\)' ) || pkill sleep ) &
|
|
- ( sleep 3600 || mkdir -p out/crashes/env_failed ) && pkill afl-fuz
|
|
# check no crashes found
|
|
- test -z "$(ls out/crashes/)" || exit 1
|
|
|
|
test_nvs_on_host:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd components/nvs_flash/test_nvs_host
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh make test
|
|
|
|
test_nvs_coverage:
|
|
extends:
|
|
- .host_test_template
|
|
- .rules:labels:nvs_coverage-only
|
|
artifacts:
|
|
paths:
|
|
- components/nvs_flash/test_nvs_host/coverage_report
|
|
expire_in: 1 week
|
|
script:
|
|
- cd components/nvs_flash/test_nvs_host
|
|
- make coverage_report
|
|
|
|
test_partition_table_on_host:
|
|
extends: .host_test_template
|
|
tags:
|
|
- build
|
|
script:
|
|
- cd components/partition_table/test_gen_esp32part_host
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./gen_esp32part_tests.py
|
|
|
|
test_wl_on_host:
|
|
extends: .host_test_template
|
|
artifacts:
|
|
paths:
|
|
- components/wear_levelling/test_wl_host/coverage_report.zip
|
|
expire_in: 1 week
|
|
script:
|
|
- cd components/wear_levelling/test_wl_host
|
|
- make test
|
|
|
|
test_fatfs_on_host:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd components/fatfs/test_fatfs_host/
|
|
- make test
|
|
|
|
test_ldgen_on_host:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd tools/ldgen/test
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_fragments.py
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_generation.py
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_entity.py
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_output_commands.py
|
|
variables:
|
|
LC_ALL: C.UTF-8
|
|
|
|
test_mdns_fuzzer_on_host:
|
|
extends: .host_fuzzer_test_template
|
|
variables:
|
|
FUZZER_TEST_DIR: components/mdns/test_afl_fuzz_host
|
|
|
|
test_lwip_dns_fuzzer_on_host:
|
|
extends: .host_fuzzer_test_template
|
|
variables:
|
|
FUZZER_TEST_DIR: components/lwip/test_afl_host
|
|
FUZZER_PARAMS: MODE=dns
|
|
|
|
test_lwip_dhcp_fuzzer_on_host:
|
|
extends: .host_fuzzer_test_template
|
|
variables:
|
|
FUZZER_TEST_DIR: components/lwip/test_afl_host
|
|
FUZZER_PARAMS: MODE=dhcp_client
|
|
|
|
test_lwip_dhcps_fuzzer_on_host:
|
|
extends: .host_fuzzer_test_template
|
|
variables:
|
|
FUZZER_TEST_DIR: components/lwip/test_afl_host
|
|
FUZZER_PARAMS: MODE=dhcp_server
|
|
|
|
test_compile_fuzzers:
|
|
extends: .host_test_template
|
|
image: $CI_DOCKER_REGISTRY/afl-fuzzer-test
|
|
script:
|
|
- cd ${IDF_PATH}/components/lwip/test_afl_host
|
|
- make MODE=dhcp_server
|
|
- make MODE=dhcp_client
|
|
- make MODE=dns
|
|
- cd ${IDF_PATH}/components/mdns/test_afl_fuzz_host
|
|
- make
|
|
|
|
test_spiffs_on_host:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd components/spiffs/test_spiffs_host/
|
|
- make test
|
|
|
|
test_multi_heap_on_host:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd components/heap/test_multi_heap_host
|
|
- ./test_all_configs.sh
|
|
|
|
test_certificate_bundle_on_host:
|
|
extends: .host_test_template
|
|
tags:
|
|
- build
|
|
script:
|
|
- cd components/mbedtls/esp_crt_bundle/test_gen_crt_bundle/
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_gen_crt_bundle.py
|
|
|
|
test_confserver:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd tools/kconfig_new/test/confserver
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_confserver.py
|
|
|
|
test_gen_kconfig_doc:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd tools/kconfig_new/test/gen_kconfig_doc/
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_target_visibility.py
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_kconfig_out.py
|
|
|
|
test_confgen:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd tools/kconfig_new/test/confgen/
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_confgen.py
|
|
|
|
test_idf_monitor:
|
|
extends: .host_test_template
|
|
artifacts:
|
|
# save artifacts always in order to access results which were retried without consequent failure
|
|
when: always
|
|
paths:
|
|
- tools/test_idf_monitor/outputs/*
|
|
expire_in: 1 week
|
|
script:
|
|
- cd ${IDF_PATH}/tools/test_idf_monitor
|
|
- ./run_test_idf_monitor.py
|
|
|
|
test_idf_size:
|
|
extends: .host_test_template
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- tools/test_idf_size/output
|
|
- tools/test_idf_size/.coverage
|
|
expire_in: 1 week
|
|
script:
|
|
- cd ${IDF_PATH}/tools/test_idf_size
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test.sh
|
|
|
|
test_idf_py:
|
|
extends: .host_test_template
|
|
variables:
|
|
LC_ALL: C.UTF-8
|
|
script:
|
|
- cd ${IDF_PATH}/tools/test_idf_py
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_idf_py.py
|
|
|
|
test_idf_tools:
|
|
extends: .host_test_template
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- tools/tools.new.json
|
|
expire_in: 1 week
|
|
script:
|
|
# Remove Xtensa and ULP toolchains from the PATH, tests will expect a clean environment
|
|
- export PATH=$(p=$(echo $PATH | tr ":" "\n" | grep -v "/root/.espressif/tools\|/opt/espressif" | tr "\n" ":"); echo ${p%:})
|
|
- cd ${IDF_PATH}/tools/test_idf_tools
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_idf_tools.py
|
|
|
|
test_esp_err_to_name_on_host:
|
|
extends: .host_test_template
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- components/esp32/esp_err_to_name.c
|
|
expire_in: 1 week
|
|
script:
|
|
- cd ${IDF_PATH}/tools/
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 2.7.15 ./gen_esp_err_to_name.py
|
|
- git diff --exit-code -- ../components/esp_common/src/esp_err_to_name.c || { echo 'Differences found. Please run gen_esp_err_to_name.py and commit the changes.'; exit 1; }
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.4.8 ./gen_esp_err_to_name.py
|
|
- git diff --exit-code -- ../components/esp_common/src/esp_err_to_name.c || { echo 'Differences found between running under Python 2 and 3.'; exit 1; }
|
|
|
|
.test_efuse_table_on_host_template:
|
|
extends: .host_test_template
|
|
variables:
|
|
IDF_TARGET: "esp32"
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- components/efuse/${IDF_TARGET}/esp_efuse_table.c
|
|
expire_in: 1 week
|
|
script:
|
|
- cd ${IDF_PATH}/components/efuse/
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 2.7.15 ./efuse_table_gen.py -t "${IDF_TARGET}" ${IDF_PATH}/components/efuse/${IDF_TARGET}/esp_efuse_table.csv
|
|
- git diff --exit-code -- ${IDF_TARGET}/esp_efuse_table.c || { echo 'Differences found for ${IDF_TARGET} target. Please run make efuse_common_table or idf.py efuse_common_table and commit the changes.'; exit 1; }
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.4.8 ./efuse_table_gen.py -t "${IDF_TARGET}" ${IDF_PATH}/components/efuse/${IDF_TARGET}/esp_efuse_table.csv
|
|
- git diff --exit-code -- ${IDF_TARGET}/esp_efuse_table.c || { echo 'Differences found between running under Python 2 and 3.'; exit 1; }
|
|
- cd ${IDF_PATH}/components/efuse/test_efuse_host
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./efuse_tests.py
|
|
|
|
test_efuse_table_on_host_esp32:
|
|
extends: .test_efuse_table_on_host_template
|
|
|
|
test_efuse_table_on_host_esp32s2:
|
|
extends: .test_efuse_table_on_host_template
|
|
variables:
|
|
IDF_TARGET: esp32s2
|
|
|
|
test_efuse_table_on_host_esp32c3:
|
|
extends: .test_efuse_table_on_host_template
|
|
variables:
|
|
IDF_TARGET: esp32c3
|
|
|
|
test_espcoredump:
|
|
extends: .host_test_template
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- components/espcoredump/test/**/.coverage
|
|
- components/espcoredump/test/**/output
|
|
expire_in: 1 week
|
|
variables:
|
|
IDF_COREDUMP_ELF_REPO: "https://gitlab-ci-token:${BOT_TOKEN}@${CI_SERVER_HOST}:${CI_SERVER_PORT}/idf/idf-coredump-elf.git"
|
|
IDF_COREDUMP_ELF_TAG: idf-20210915
|
|
# install CMake version specified in tools.json
|
|
SETUP_TOOLS_LIST: "all"
|
|
script:
|
|
- retry_failed git clone ${IDF_COREDUMP_ELF_REPO} -b $IDF_COREDUMP_ELF_TAG
|
|
- cd components/espcoredump/test/
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_espcoredump.sh ${CI_PROJECT_DIR}/idf-coredump-elf
|
|
|
|
test_logtrace_proc:
|
|
extends: .host_test_template
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- tools/esp_app_trace/test/logtrace/output
|
|
- tools/esp_app_trace/test/logtrace/.coverage
|
|
expire_in: 1 week
|
|
script:
|
|
- cd ${IDF_PATH}/tools/esp_app_trace/test/logtrace
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test.sh
|
|
|
|
test_sysviewtrace_proc:
|
|
extends: .host_test_template
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- tools/esp_app_trace/test/sysview/output
|
|
- tools/esp_app_trace/test/sysview/.coverage
|
|
expire_in: 1 week
|
|
script:
|
|
- cd ${IDF_PATH}/tools/esp_app_trace/test/sysview
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test.sh
|
|
|
|
test_mkdfu:
|
|
extends: .host_test_template
|
|
variables:
|
|
LC_ALL: C.UTF-8
|
|
script:
|
|
- cd ${IDF_PATH}/tools/test_mkdfu
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_mkdfu.py
|
|
|
|
test_mkuf2:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd ${IDF_PATH}/tools/test_mkuf2
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_mkuf2.py
|
|
|
|
test_docs:
|
|
extends: .host_test_template
|
|
image: $ESP_IDF_DOC_ENV_IMAGE
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- docs/test/_build/*/*/*/html/*
|
|
expire_in: 1 week
|
|
script:
|
|
- cd ${IDF_PATH}/docs/test
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 pip install -r ${IDF_PATH}/docs/requirements.txt
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ./test_docs.py
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ./test_sphinx_idf_extensions.py
|
|
|
|
test_sbom:
|
|
extends:
|
|
- .host_test_template
|
|
- .rules:patterns:sbom
|
|
script:
|
|
- python ${IDF_PATH}/tools/test_sbom/test_submodules.py
|
|
|
|
test_autocomplete:
|
|
extends: .host_test_template
|
|
image: $CI_DOCKER_REGISTRY/linux-shells:1
|
|
allow_failure: true
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- ${IDF_PATH}/*.out
|
|
expire_in: 1 week
|
|
script:
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ${IDF_PATH}/tools/ci/test_autocomplete.py
|
|
|
|
test_detect_python:
|
|
extends: .host_test_template
|
|
image: $CI_DOCKER_REGISTRY/linux-shells:1
|
|
script:
|
|
- cd ${IDF_PATH}
|
|
- shellcheck -s sh tools/detect_python.sh
|
|
- shellcheck -s bash tools/detect_python.sh
|
|
- shellcheck -s dash tools/detect_python.sh
|
|
- "bash -c '. tools/detect_python.sh && echo Our Python: ${ESP_PYTHON?Python is not set}'"
|
|
- "dash -c '. tools/detect_python.sh && echo Our Python: ${ESP_PYTHON?Python is not set}'"
|
|
- "zsh -c '. tools/detect_python.sh && echo Our Python: ${ESP_PYTHON?Python is not set}'"
|
|
- "fish -c 'source tools/detect_python.fish && echo Our Python: $ESP_PYTHON'"
|
|
|
|
test_nvs_page:
|
|
extends: .host_test_template
|
|
script:
|
|
- cd ${IDF_PATH}/components/nvs_flash/host_test/nvs_page_test
|
|
- idf.py build
|
|
- build/host_nvs_page_test.elf
|