pre_check.yml 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. check_line_endings:
  2. extends: .check_job_template
  3. script:
  4. - tools/ci/check-line-endings.sh ${IDF_PATH}
  5. check_permissions:
  6. extends: .check_job_template
  7. script:
  8. - tools/ci/check-executable.sh
  9. check_docs_lang_sync:
  10. extends: .check_job_template
  11. stage: pre_check
  12. variables:
  13. SUBMODULES_TO_FETCH: "none"
  14. script:
  15. - cd docs
  16. - ./check_lang_folder_sync.sh
  17. check_docs_gh_links:
  18. extends: .build_docs_template
  19. stage: pre_check
  20. variables:
  21. SUBMODULES_TO_FETCH: "none"
  22. script:
  23. - cd docs
  24. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 pip install -r requirements.txt
  25. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ./build_docs.py gh-linkcheck
  26. check_version:
  27. extends: .check_job_template
  28. # Don't run this for feature/bugfix branches, so that it is possible to modify
  29. # esp_idf_version.h in a branch before tagging the next version.
  30. only:
  31. - master
  32. - /^release\/v/
  33. - /^v\d+\.\d+(\.\d+)?($|-)/
  34. script:
  35. - export IDF_PATH=$PWD
  36. - tools/ci/check_idf_version.sh
  37. check_examples_cmake_make:
  38. extends: .check_job_template_with_filter
  39. except:
  40. - master
  41. - /^release\/v/
  42. - /^v\d+\.\d+(\.\d+)?($|-)/
  43. script:
  44. - tools/ci/check_examples_cmake_make.sh
  45. check_examples_rom_header:
  46. extends: .check_job_template_with_filter
  47. script:
  48. - tools/ci/check_examples_rom_header.sh
  49. check_python_style:
  50. extends: .python_lint_template
  51. artifacts:
  52. when: on_failure
  53. paths:
  54. - flake8_output.txt
  55. expire_in: 1 week
  56. script:
  57. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh python -m flake8 --config=$IDF_PATH/.flake8 --output-file=flake8_output.txt --tee --benchmark $IDF_PATH
  58. check_kconfigs:
  59. extends: .check_job_template_with_filter
  60. artifacts:
  61. when: on_failure
  62. paths:
  63. - components/*/Kconfig*.new
  64. - examples/*/*/*/Kconfig*.new
  65. - examples/*/*/*/*/Kconfig*.new
  66. - tools/*/Kconfig*.new
  67. - tools/*/*/Kconfig*.new
  68. - tools/*/*/*/Kconfig*.new
  69. expire_in: 1 week
  70. script:
  71. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ${IDF_PATH}/tools/test_check_kconfigs.py
  72. - ${IDF_PATH}/tools/check_kconfigs.py
  73. check_deprecated_kconfig_options:
  74. extends: .check_job_template_with_filter
  75. script:
  76. - ${IDF_PATH}/tools/ci/check_deprecated_kconfigs.py
  77. check_cmake_style:
  78. extends: .check_job_template
  79. only:
  80. variables:
  81. - $BOT_TRIGGER_WITH_LABEL == null
  82. - $BOT_LABEL_BUILD
  83. - $BOT_LABEL_REGULAR_TEST
  84. script:
  85. tools/cmake/run_cmake_lint.sh
  86. check_wifi_lib_md5:
  87. stage: pre_check
  88. image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
  89. tags:
  90. - build
  91. variables:
  92. SUBMODULES_TO_FETCH: "components/esp_wifi/lib"
  93. dependencies: []
  94. script:
  95. - IDF_TARGET=esp32 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
  96. - IDF_TARGET=esp32s2 $IDF_PATH/components/esp_wifi/test_md5/test_md5.sh
  97. .build_with_make_and_cmake: &build_with_make_and_cmake |
  98. echo -e "section_end:"`date +%s`":build_script\r\e[0Ksection_start:"`date +%s`":build_make\r\e[0KBuild with Make"
  99. make defconfig
  100. make all
  101. make clean
  102. echo -e "section_end:"`date +%s`":build_make\r\e[0Ksection_start:"`date +%s`":build_cmake\r\e[0KBuild with CMake"
  103. rm -rf build sdkconfig
  104. idf.py build
  105. echo -e "section_end:"`date +%s`":build_cmake\r\e[0Ksection_start:"`date +%s`":build_script\r\e[0K"
  106. build_template_app:
  107. stage: pre_check
  108. image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
  109. tags:
  110. - build
  111. variables:
  112. BATCH_BUILD: "1"
  113. only:
  114. variables:
  115. - $BOT_TRIGGER_WITH_LABEL == null
  116. - $BOT_LABEL_BUILD
  117. - $BOT_LABEL_REGULAR_TEST
  118. script:
  119. # Set the variable for 'esp-idf-template' testing
  120. - ESP_IDF_TEMPLATE_GIT=${ESP_IDF_TEMPLATE_GIT:-"https://github.com/espressif/esp-idf-template.git"}
  121. - ./tools/ci/retry_failed.sh git clone ${ESP_IDF_TEMPLATE_GIT}
  122. # Try to use the same branch name for esp-idf-template that we're
  123. # using on esp-idf. If it doesn't exist then just stick to the default branch
  124. - python $CHECKOUT_REF_SCRIPT esp-idf-template esp-idf-template
  125. - cd esp-idf-template
  126. - export PATH="$IDF_PATH/tools:$PATH"
  127. - export EXTRA_CFLAGS=${PEDANTIC_CFLAGS}
  128. - export EXTRA_CXXFLAGS=${PEDANTIC_CXXFLAGS}
  129. # CONFIG_COMPILER_OPTIMIZATION_DEFAULT with flag -Og
  130. - echo "CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y" > sdkconfig.defaults
  131. - echo "CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG=y" >> sdkconfig.defaults
  132. - *build_with_make_and_cmake
  133. # CONFIG_COMPILER_OPTIMIZATION_NONE with flag -O0
  134. - echo "CONFIG_COMPILER_OPTIMIZATION_NONE=y" > sdkconfig.defaults
  135. - echo "CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE=y" >> sdkconfig.defaults
  136. - *build_with_make_and_cmake
  137. # CONFIG_COMPILER_OPTIMIZATION_SIZE with flag -Os
  138. - echo "CONFIG_COMPILER_OPTIMIZATION_SIZE=y" > sdkconfig.defaults
  139. - echo "CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y" >> sdkconfig.defaults
  140. - *build_with_make_and_cmake
  141. # CONFIG_COMPILER_OPTIMIZATION_PERF with flag -O2
  142. - echo "CONFIG_COMPILER_OPTIMIZATION_PERF=y" > sdkconfig.defaults
  143. - echo "CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF=y" >> sdkconfig.defaults
  144. - *build_with_make_and_cmake
  145. # Same as above, but also disable assertions.
  146. - echo "CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE=y" >> sdkconfig.defaults
  147. # Don't error out on -Wunused, when assertions are disabled
  148. - export EXTRA_CFLAGS=${PEDANTIC_CFLAGS/-Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function/}
  149. - export EXTRA_CXXFLAGS=${PEDANTIC_CXXFLAGS/-Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function/}
  150. - *build_with_make_and_cmake
  151. - export EXTRA_CFLAGS=${PEDANTIC_CFLAGS}
  152. - export EXTRA_CXXFLAGS=${PEDANTIC_CXXFLAGS}
  153. # Check if there are any stray printf/ets_printf references in WiFi libs
  154. - pushd ../components/esp_wifi/lib
  155. - for dir in esp32 esp32s2; do test $(xtensa-esp32-elf-nm $dir/*.a | grep -w printf | wc -l) -eq 0; done;
  156. - for dir in esp32 esp32s2; do test $(xtensa-esp32-elf-nm $dir/*.a | grep -w ets_printf | wc -l) -eq 0; done;
  157. - popd
  158. check_public_headers:
  159. stage: pre_check
  160. image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
  161. tags:
  162. - build
  163. variables:
  164. BATCH_BUILD: "1"
  165. only:
  166. variables:
  167. - $BOT_TRIGGER_WITH_LABEL == null
  168. - $BOT_LABEL_BUILD
  169. - $BOT_LABEL_REGULAR_TEST
  170. script:
  171. - python tools/ci/check_public_headers.py --jobs 4 --prefix xtensa-esp32-elf-
  172. # For release tag pipelines only, make sure the tag was created with 'git tag -a' so it will update
  173. # the version returned by 'git describe'
  174. check_version_tag:
  175. extends: .check_job_template
  176. only:
  177. refs:
  178. - /^v\d+\.\d+(\.\d+)?($|-)/
  179. variables:
  180. - $BOT_TRIGGER_WITH_LABEL == null
  181. script:
  182. - (git cat-file -t $CI_COMMIT_REF_NAME | grep tag) || (echo "ESP-IDF versions must be annotated tags." && exit 1)