.pre_check_base_template: stage: pre_check image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG tags: - host_test dependencies: [] .pre_check_job_template: extends: - .pre_check_base_template - .before_script_lesser_nofilter .pre_check_job_template_with_filter: extends: - .pre_check_base_template - .before_script_lesser .check_pre_commit_template: extends: .pre_check_job_template stage: pre_check image: "$CI_DOCKER_REGISTRY/esp-idf-pre-commit:1" before_script: - source tools/ci/utils.sh - export PYTHONPATH="$CI_PROJECT_DIR/tools:$CI_PROJECT_DIR/tools/ci/python_packages:$PYTHONPATH" check_pre_commit_master_release: extends: - .check_pre_commit_template - .rules:protected script: - git diff-tree --no-commit-id --name-only -r $CI_COMMIT_SHA | xargs pre-commit run --files check_pre_commit_MR: extends: - .check_pre_commit_template - .rules:dev script: - python ${CI_PROJECT_DIR}/tools/ci/ci_get_mr_info.py files ${CI_COMMIT_BRANCH} | xargs pre-commit run --files check_docs_lang_sync: extends: .pre_check_job_template variables: SUBMODULES_TO_FETCH: "none" script: - cd docs - ./check_lang_folder_sync.sh check_version: # Don't run this for feature/bugfix branches, so that it is possible to modify # esp_idf_version.h in a branch before tagging the next version. extends: - .pre_check_job_template - .rules:protected script: - export IDF_PATH=$PWD - tools/ci/check_idf_version.sh check_examples_cmake_make: extends: - .pre_check_job_template_with_filter - .rules:dev script: - python ${IDF_PATH}/tools/ci/check_examples_cmake_make.py check_rom_api_header: extends: .pre_check_job_template_with_filter script: - tools/ci/check_examples_rom_header.sh - tools/ci/check_rom_apis.sh check_python_style: extends: .pre_check_base_template artifacts: when: on_failure paths: - flake8_output.txt expire_in: 1 week script: - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh python -m flake8 --config=$IDF_PATH/.flake8 --output-file=flake8_output.txt --tee --benchmark $IDF_PATH check_kconfigs: extends: .pre_check_job_template_with_filter artifacts: when: on_failure paths: - components/*/Kconfig*.new - examples/*/*/*/Kconfig*.new - examples/*/*/*/*/Kconfig*.new - tools/*/Kconfig*.new - tools/*/*/Kconfig*.new - tools/*/*/*/Kconfig*.new expire_in: 1 week script: - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ${IDF_PATH}/tools/ci/test_check_kconfigs.py - ${IDF_PATH}/tools/ci/check_kconfigs.py check_wifi_lib_md5: extends: .pre_check_base_template tags: - build variables: SUBMODULES_TO_FETCH: "components/esp_wifi/lib" script: - IDF_TARGET=esp32 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh - IDF_TARGET=esp32s2 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh check_public_headers: extends: - .pre_check_base_template - .rules:labels:build tags: - build script: - python tools/ci/check_public_headers.py --jobs 4 --prefix xtensa-esp32-elf- .scan_build_tests: stage: pre_check image: $CI_DOCKER_REGISTRY/ubuntu-test-env$BOT_DOCKER_IMAGE_TAG tags: - assign_test variables: CI_SCAN_TESTS_PY: ${CI_PROJECT_DIR}/tools/ci/python_packages/ttfw_idf/CIScanTests.py TEST_CONFIG_FILE: ${CI_PROJECT_DIR}/tools/ci/config/target-test.yml scan_tests: extends: - .scan_build_tests - .rules:build_tests:target_test-weekend_test artifacts: paths: - $EXAMPLE_TEST_OUTPUT_DIR - $TEST_APPS_OUTPUT_DIR - $COMPONENT_UT_OUTPUT_DIR variables: EXAMPLE_TEST_DIR: ${CI_PROJECT_DIR}/examples EXAMPLE_TEST_OUTPUT_DIR: ${CI_PROJECT_DIR}/examples/test_configs TEST_APPS_TEST_DIR: ${CI_PROJECT_DIR}/tools/test_apps TEST_APPS_OUTPUT_DIR: ${CI_PROJECT_DIR}/tools/test_apps/test_configs COMPONENT_UT_OUTPUT_DIR: ${CI_PROJECT_DIR}/component_ut/test_configs EXTRA_TEST_DIRS: >- examples/bluetooth/esp_ble_mesh/ble_mesh_console examples/bluetooth/hci/controller_hci_uart_esp32 examples/wifi/iperf PYTHON_VER: 3 script: - set_component_ut_vars - python $CI_SCAN_TESTS_PY example_test $EXAMPLE_TEST_DIR -b make --exclude examples/build_system/idf_as_lib -c $TEST_CONFIG_FILE -o $EXAMPLE_TEST_OUTPUT_DIR - python $CI_SCAN_TESTS_PY example_test $EXAMPLE_TEST_DIR -b cmake --exclude examples/build_system/idf_as_lib -c $TEST_CONFIG_FILE -o $EXAMPLE_TEST_OUTPUT_DIR --extra_test_dirs $EXTRA_TEST_DIRS - python $CI_SCAN_TESTS_PY test_apps $TEST_APPS_TEST_DIR -c $TEST_CONFIG_FILE -o $TEST_APPS_OUTPUT_DIR - python $CI_SCAN_TESTS_PY component_ut $COMPONENT_UT_DIRS --exclude $COMPONENT_UT_EXCLUDES -c $TEST_CONFIG_FILE -o $COMPONENT_UT_OUTPUT_DIR check_readme_links: extends: .pre_check_job_template tags: [ "amd64", "deploy", "internet" ] allow_failure: true variables: PYTHON_VER: 3 script: - python ${IDF_PATH}/tools/ci/check_readme_links.py .clang_tidy_check_template: extends: .pre_check_base_template image: ${CI_DOCKER_REGISTRY}/clang-static-analysis artifacts: reports: junit: $IDF_PATH/output.xml when: always paths: - $IDF_PATH/examples/get-started/hello_world/tidybuild/report/* expire_in: 1 day script: - retry_failed git clone $IDF_ANALYSIS_UTILS static_analysis_utils && cd static_analysis_utils # Setup parameters of triggered/regular job - export TRIGGERED_RELATIVE=${BOT_LABEL_STATIC_ANALYSIS-} && export TRIGGERED_ABSOLUTE=${BOT_LABEL_STATIC_ANALYSIS_ALL-} && export TARGET_BRANCH=${BOT_CUSTOMIZED_REVISION-} - ./analyze.sh $IDF_PATH/examples/get-started/hello_world/ $IDF_PATH/tools/ci/static-analysis-rules.yml $IDF_PATH/output.xml clang_tidy_check: extends: .clang_tidy_check_template variables: BOT_NEEDS_TRIGGER_BY_NAME: 1 BOT_LABEL_STATIC_ANALYSIS: 1 clang_tidy_check_regular: extends: .clang_tidy_check_template clang_tidy_check_all: extends: .clang_tidy_check_template variables: BOT_NEEDS_TRIGGER_BY_NAME: 1 BOT_LABEL_STATIC_ANALYSIS_ALL: 1 # For release tag pipelines only, make sure the tag was created with 'git tag -a' so it will update # the version returned by 'git describe' check_version_tag: extends: - .pre_check_job_template - .rules:tag:release-no_label script: - (git cat-file -t $CI_COMMIT_REF_NAME | grep tag) || (echo "ESP-IDF versions must be annotated tags." && exit 1)