| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- .pre_check_template:
- stage: pre_check
- image: $ESP_ENV_IMAGE
- tags:
- - host_test
- dependencies: []
- check_pre_commit:
- extends:
- - .pre_check_template
- - .before_script:minimal
- image: $PRE_COMMIT_IMAGE
- needs:
- - pipeline_variables
- script:
- - fetch_submodules
- - pre-commit run --files $MODIFIED_FILES
- check_MR_style_dangerjs:
- extends:
- - .pre_check_template
- image: node:18.15.0-alpine3.16
- variables:
- DANGER_GITLAB_API_TOKEN: ${ESPCI_TOKEN}
- DANGER_GITLAB_HOST: ${GITLAB_HTTP_SERVER}
- DANGER_GITLAB_API_BASE_URL: ${GITLAB_HTTP_SERVER}/api/v4
- DANGER_JIRA_USER: ${DANGER_JIRA_USER}
- DANGER_JIRA_PASSWORD: ${DANGER_JIRA_PASSWORD}
- cache:
- # pull only for most of the use cases since it's cache dir.
- # Only set "push" policy for "upload_cache" stage jobs
- key:
- files:
- - .gitlab/dangerjs/package-lock.json
- paths:
- - .gitlab/dangerjs/node_modules/
- policy: pull
- before_script:
- - cd .gitlab/dangerjs
- - npm install --no-progress --no-update-notifier # Install danger dependencies
- script:
- - npx danger ci --failOnErrors -v
- rules:
- - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- 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_template
- - .rules:protected
- - .before_script:fetch:git_describe
- script:
- - export IDF_PATH=$PWD
- - tools/ci/check_idf_version.sh
- check_api_usage:
- extends: .pre_check_template
- script:
- - tools/ci/check_examples_rom_header.sh
- - tools/ci/check_api_violation.sh
- - tools/ci/check_examples_extra_component_dirs.sh
- check_blobs:
- extends:
- - .pre_check_template
- - .rules:build:check
- variables:
- SUBMODULES_TO_FETCH: "components/esp_wifi/lib;components/esp_phy/lib;components/esp_coex/lib"
- script:
- # Check if Wi-Fi library header files match between IDF and the version used when compiling the libraries
- - 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
- - IDF_TARGET=esp32s3 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
- - IDF_TARGET=esp32c2 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
- - IDF_TARGET=esp32c3 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
- - IDF_TARGET=esp32c6 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
- # Check if Coexistence library header files match between IDF and the version used when compiling the libraries
- - IDF_TARGET=esp32 $IDF_PATH/components/esp_coex/test_md5/test_md5.sh
- - IDF_TARGET=esp32s2 $IDF_PATH/components/esp_coex/test_md5/test_md5.sh
- - IDF_TARGET=esp32s3 $IDF_PATH/components/esp_coex/test_md5/test_md5.sh
- - IDF_TARGET=esp32c2 $IDF_PATH/components/esp_coex/test_md5/test_md5.sh
- - IDF_TARGET=esp32c3 $IDF_PATH/components/esp_coex/test_md5/test_md5.sh
- - IDF_TARGET=esp32c6 $IDF_PATH/components/esp_coex/test_md5/test_md5.sh
- - IDF_TARGET=esp32h2 $IDF_PATH/components/esp_coex/test_md5/test_md5.sh
- # Check if Wi-Fi, PHY, BT blobs contain references to specific symbols
- - bash $IDF_PATH/tools/ci/check_blobs.sh
- check_public_headers:
- extends:
- - .pre_check_template
- - .rules:build:check
- script:
- - IDF_TARGET=esp32 python tools/ci/check_public_headers.py --jobs 4 --prefix xtensa-esp32-elf-
- - IDF_TARGET=esp32s2 python tools/ci/check_public_headers.py --jobs 4 --prefix xtensa-esp32s2-elf-
- - IDF_TARGET=esp32s3 python tools/ci/check_public_headers.py --jobs 4 --prefix xtensa-esp32s3-elf-
- - IDF_TARGET=esp32c3 python tools/ci/check_public_headers.py --jobs 4 --prefix riscv32-esp-elf-
- - IDF_TARGET=esp32c2 python tools/ci/check_public_headers.py --jobs 4 --prefix riscv32-esp-elf-
- - IDF_TARGET=esp32c6 python tools/ci/check_public_headers.py --jobs 4 --prefix riscv32-esp-elf-
- - IDF_TARGET=esp32h2 python tools/ci/check_public_headers.py --jobs 4 --prefix riscv32-esp-elf-
- - IDF_TARGET=esp32p4 python tools/ci/check_public_headers.py --jobs 4 --prefix riscv32-esp-elf-
- check_chip_support_components:
- extends:
- - .pre_check_template
- - .rules:build:check
- artifacts:
- when: on_failure
- paths:
- - esp_hw_support_part.h
- - bootloader_support_part.h
- expire_in: 1 week
- script:
- - python tools/ci/check_soc_headers_leak.py
- - find ${IDF_PATH}/components/soc/*/include/soc/ -name "*_struct.h" -print0 | xargs -0 -n1 ./tools/ci/check_soc_struct_headers.py
- - tools/ci/check_esp_memory_utils_headers.sh
- check_esp_err_to_name:
- extends:
- - .pre_check_template
- - .rules:build:check
- artifacts:
- when: on_failure
- paths:
- - components/esp_common/esp_err_to_name.c
- expire_in: 1 week
- script:
- - cd ${IDF_PATH}/tools/
- - ./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; }
- check_esp_system:
- extends:
- - .pre_check_template
- - .rules:build
- script:
- - python components/esp_system/check_system_init_priorities.py
- # 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'
- # Don't forget to update the env var `LATEST_GIT_TAG` in .gitlab/ci/common.yml
- check_version_tag:
- extends:
- - .pre_check_template
- - .rules:tag:release
- - .before_script:fetch:git_describe
- script:
- - (git cat-file -t $CI_COMMIT_REF_NAME | grep tag) || (echo "ESP-IDF versions must be annotated tags." && exit 1)
- check_artifacts_expire_time:
- extends: .pre_check_template
- script:
- # check if we have set expire time for all artifacts
- - python tools/ci/check_artifacts_expire_time.py
- check_test_scripts_build_test_rules:
- extends:
- - .pre_check_template
- - .before_script:build
- script:
- # required pytest related packages
- - run_cmd bash install.sh --enable-pytest
- - python tools/ci/check_build_test_rules.py check-test-scripts examples/ tools/test_apps components
- check_configure_ci_environment_parsing:
- extends:
- - .pre_check_template
- - .before_script:build
- - .rules:build
- script:
- - cd tools/ci
- - python -m unittest ci_build_apps.py
- pipeline_variables:
- extends:
- - .pre_check_template
- - .before_script:fetch:git_diff
- tags:
- - build
- script:
- - MODIFIED_FILES=$(echo $GIT_DIFF_OUTPUT | xargs)
- - echo "MODIFIED_FILES=$MODIFIED_FILES" >> pipeline.env
- - echo "MODIFIED_COMPONENTS=$(run_cmd python tools/ci/ci_get_mr_info.py components --modified-files $MODIFIED_FILES | xargs)" >> pipeline.env
- - |
- if echo "$CI_MERGE_REQUEST_LABELS" | egrep "(^|,)BUILD_AND_TEST_ALL_APPS(,|$)"; then
- echo "BUILD_AND_TEST_ALL_APPS=1" >> pipeline.env
- fi
- - cat pipeline.env
- artifacts:
- reports:
- dotenv: pipeline.env
- expire_in: 4 days
|