pre_check.yml 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. .pre_check_base_template:
  2. stage: pre_check
  3. image: $ESP_ENV_IMAGE
  4. tags:
  5. - host_test
  6. dependencies: []
  7. .pre_check_job_template:
  8. extends:
  9. - .pre_check_base_template
  10. - .before_script_no_sync_submodule
  11. .check_pre_commit_template:
  12. extends: .pre_check_job_template
  13. image: "$CI_DOCKER_REGISTRY/esp-idf-pre-commit:1"
  14. before_script:
  15. - source tools/ci/utils.sh
  16. - export PYTHONPATH="$CI_PROJECT_DIR/tools:$CI_PROJECT_DIR/tools/ci/python_packages:$PYTHONPATH"
  17. check_pre_commit_master_release:
  18. extends:
  19. - .check_pre_commit_template
  20. - .rules:protected
  21. script:
  22. - git diff-tree --no-commit-id --name-only -r $CI_COMMIT_SHA | xargs pre-commit run --files
  23. check_pre_commit_MR:
  24. extends:
  25. - .check_pre_commit_template
  26. - .rules:dev
  27. script:
  28. - python ${CI_PROJECT_DIR}/tools/ci/ci_get_mr_info.py files ${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME} | xargs pre-commit run --files
  29. check_version:
  30. # Don't run this for feature/bugfix branches, so that it is possible to modify
  31. # esp_idf_version.h in a branch before tagging the next version.
  32. extends:
  33. - .pre_check_job_template
  34. - .rules:protected
  35. script:
  36. - export IDF_PATH=$PWD
  37. - tools/ci/check_idf_version.sh
  38. check_examples_cmake_make:
  39. extends: .pre_check_job_template
  40. script:
  41. - python ${IDF_PATH}/tools/ci/check_examples_cmake_make.py
  42. check_rom_api_header:
  43. extends: .pre_check_job_template
  44. script:
  45. - tools/ci/check_examples_rom_header.sh
  46. - tools/ci/check_api_violation.sh
  47. check_python_style:
  48. extends:
  49. - .pre_check_base_template
  50. - .rules:patterns:python-files
  51. variables:
  52. PYTHON_VER: 3.6.13
  53. artifacts:
  54. when: on_failure
  55. paths:
  56. - flake8_output.txt
  57. expire_in: 1 week
  58. script:
  59. - python -m flake8 --config=$IDF_PATH/.flake8 --output-file=flake8_output.txt --tee --benchmark $IDF_PATH
  60. test_check_kconfigs:
  61. extends: .pre_check_job_template
  62. variables:
  63. PYTHON_VER: 3.6.13
  64. artifacts:
  65. when: on_failure
  66. paths:
  67. - components/*/Kconfig*.new
  68. - examples/*/*/*/Kconfig*.new
  69. - examples/*/*/*/*/Kconfig*.new
  70. - tools/*/Kconfig*.new
  71. - tools/*/*/Kconfig*.new
  72. - tools/*/*/*/Kconfig*.new
  73. expire_in: 1 week
  74. script:
  75. - python ${IDF_PATH}/tools/ci/test_check_kconfigs.py
  76. check_wifi_lib_md5:
  77. extends: .pre_check_base_template
  78. tags:
  79. - build
  80. variables:
  81. SUBMODULES_TO_FETCH: "components/esp_wifi/lib"
  82. script:
  83. - IDF_TARGET=esp32 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
  84. - IDF_TARGET=esp32s2 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
  85. check_fuzzer_compilation:
  86. extends: .pre_check_base_template
  87. image: $AFL_FUZZER_TEST_IMAGE
  88. script:
  89. - cd ${IDF_PATH}/components/lwip/test_afl_host
  90. - make MODE=dhcp_server
  91. - make MODE=dhcp_client
  92. - make MODE=dns
  93. - cd ${IDF_PATH}/components/mdns/test_afl_fuzz_host
  94. - make
  95. check_public_headers:
  96. extends:
  97. - .pre_check_base_template
  98. - .rules:build
  99. tags:
  100. - build
  101. script:
  102. - python tools/ci/check_public_headers.py --jobs 4 --prefix xtensa-esp32-elf-
  103. check_soc_struct_headers:
  104. extends:
  105. - .pre_check_base_template
  106. - .rules:build
  107. tags:
  108. - build
  109. script:
  110. - find ${IDF_PATH}/components/soc/*/include/soc/ -name "*_struct.h" -print0 | xargs -0 -n1 ./tools/ci/check_soc_struct_headers.py
  111. check_esp_err_to_name:
  112. extends:
  113. - .pre_check_base_template
  114. - .rules:build
  115. tags:
  116. - build
  117. artifacts:
  118. when: on_failure
  119. paths:
  120. - components/esp_common/esp_err_to_name.c
  121. expire_in: 1 week
  122. script:
  123. - cd ${IDF_PATH}/tools/
  124. - ./gen_esp_err_to_name.py
  125. - 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; }
  126. scan_tests:
  127. extends:
  128. - .pre_check_base_template
  129. - .rules:build:target_test
  130. image: $CI_DOCKER_REGISTRY/ubuntu-test-env$BOT_DOCKER_IMAGE_TAG
  131. tags:
  132. - assign_test
  133. artifacts:
  134. paths:
  135. - $EXAMPLE_TEST_OUTPUT_DIR
  136. - $TEST_APPS_OUTPUT_DIR
  137. - $COMPONENT_UT_OUTPUT_DIR
  138. variables:
  139. EXAMPLE_TEST_DIR: ${CI_PROJECT_DIR}/examples
  140. EXAMPLE_TEST_OUTPUT_DIR: ${CI_PROJECT_DIR}/examples/test_configs
  141. TEST_APPS_TEST_DIR: ${CI_PROJECT_DIR}/tools/test_apps
  142. TEST_APPS_OUTPUT_DIR: ${CI_PROJECT_DIR}/tools/test_apps/test_configs
  143. COMPONENT_UT_OUTPUT_DIR: ${CI_PROJECT_DIR}/component_ut/test_configs
  144. CI_SCAN_TESTS_PY: ${CI_PROJECT_DIR}/tools/ci/python_packages/ttfw_idf/CIScanTests.py
  145. script:
  146. - set_component_ut_vars
  147. - run_cmd python $CI_SCAN_TESTS_PY example_test $EXAMPLE_TEST_DIR -b make --exclude examples/build_system/idf_as_lib -c $CI_TARGET_TEST_CONFIG_FILE -o $EXAMPLE_TEST_OUTPUT_DIR
  148. - run_cmd python $CI_SCAN_TESTS_PY example_test $EXAMPLE_TEST_DIR -b cmake --exclude examples/build_system/idf_as_lib -c $CI_TARGET_TEST_CONFIG_FILE -o $EXAMPLE_TEST_OUTPUT_DIR
  149. - run_cmd python $CI_SCAN_TESTS_PY test_apps $TEST_APPS_TEST_DIR -c $CI_TARGET_TEST_CONFIG_FILE -o $TEST_APPS_OUTPUT_DIR
  150. - run_cmd python $CI_SCAN_TESTS_PY component_ut $COMPONENT_UT_DIRS --exclude $COMPONENT_UT_EXCLUDES -c $CI_TARGET_TEST_CONFIG_FILE -o $COMPONENT_UT_OUTPUT_DIR
  151. # For release tag pipelines only, make sure the tag was created with 'git tag -a' so it will update
  152. # the version returned by 'git describe'
  153. check_version_tag:
  154. extends:
  155. - .pre_check_job_template
  156. - .rules:tag:release
  157. script:
  158. - (git cat-file -t $CI_COMMIT_REF_NAME | grep tag) || (echo "ESP-IDF versions must be annotated tags." && exit 1)
  159. check_ut_cmake_make:
  160. extends: .pre_check_job_template
  161. tags:
  162. - build
  163. script:
  164. - tools/ci/check_ut_cmake_make.sh
  165. check_artifacts_expire_time:
  166. extends: .pre_check_job_template
  167. script:
  168. # check if we have set expire time for all artifacts
  169. - python tools/ci/check_artifacts_expire_time.py
  170. check_commit_msg:
  171. extends: .pre_check_job_template
  172. script:
  173. - git status
  174. - git log -n10 --oneline
  175. # commit start with "WIP: " need to be squashed before merge
  176. - 'git log --pretty=%s master.. -- | grep "^WIP: " && exit 1 || exit 0'