docs.yml 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. .patterns-docs-full: &patterns-docs-full
  2. - ".gitlab/ci/docs.yml"
  3. - "docs/**/*"
  4. - "**/*.rst"
  5. - "CONTRIBUTING.rst"
  6. - "**/soc_caps.h"
  7. .patterns-docs-partial: &patterns-docs-partial
  8. - "components/**/*.h"
  9. - "components/**/Kconfig*"
  10. - "components/**/CMakeList.txt"
  11. - "components/**/sdkconfig*"
  12. - "tools/tools.json"
  13. - "tools/idf_tools.py"
  14. .patterns-example-readme: &patterns-example-readme
  15. - "examples/**/*.md"
  16. .patterns-docs-preview: &patterns-docs-preview
  17. - "docs/**/*"
  18. .if-protected: &if-protected
  19. if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/)'
  20. .if-protected-no_label: &if-protected-no_label
  21. if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/) && $BOT_TRIGGER_WITH_LABEL == null'
  22. .if-qa-test-tag: &if-qa-test-tag
  23. if: '$CI_COMMIT_TAG =~ /^qa-test/'
  24. .if-label-build_docs: &if-label-build_docs
  25. if: '$BOT_LABEL_BUILD_DOCS || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*build_docs(?:,[^,\n\r]+)*$/i'
  26. .if-label-docs_full: &if-label-docs_full
  27. if: '$BOT_LABEL_DOCS_FULL || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*docs_full(?:,[^,\n\r]+)*$/i'
  28. .if-dev-push: &if-dev-push
  29. if: '$CI_COMMIT_REF_NAME != "master" && $CI_COMMIT_BRANCH !~ /^release\/v/ && $CI_COMMIT_TAG !~ /^v\d+\.\d+(\.\d+)?($|-)/ && $CI_COMMIT_TAG !~ /^qa-test/ && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "merge_request_event")'
  30. .if-schedule: &if-schedule
  31. if: '$CI_PIPELINE_SOURCE == "schedule"'
  32. .doc-rules:build:docs-full:
  33. rules:
  34. - <<: *if-qa-test-tag
  35. when: never
  36. - <<: *if-schedule
  37. - <<: *if-label-build_docs
  38. - <<: *if-label-docs_full
  39. - <<: *if-dev-push
  40. changes: *patterns-docs-full
  41. .doc-rules:build:docs-full-prod:
  42. rules:
  43. - <<: *if-qa-test-tag
  44. when: never
  45. - <<: *if-protected-no_label
  46. .doc-rules:build:docs-partial:
  47. rules:
  48. - <<: *if-qa-test-tag
  49. when: never
  50. - <<: *if-dev-push
  51. changes: *patterns-docs-full
  52. when: never
  53. - <<: *if-dev-push
  54. changes: *patterns-docs-partial
  55. # stage: pre_check
  56. check_readme_links:
  57. extends:
  58. - .pre_check_template
  59. tags: ["build", "amd64", "internet"]
  60. allow_failure: true
  61. rules:
  62. - <<: *if-protected
  63. - <<: *if-dev-push
  64. changes: *patterns-example-readme
  65. script:
  66. - python ${IDF_PATH}/tools/ci/check_readme_links.py
  67. check_docs_lang_sync:
  68. extends:
  69. - .pre_check_template
  70. - .doc-rules:build:docs-full
  71. script:
  72. - cd docs
  73. - ./check_lang_folder_sync.sh
  74. .build_docs_template:
  75. image: $ESP_IDF_DOC_ENV_IMAGE
  76. stage: build_doc
  77. tags:
  78. - build_docs
  79. script:
  80. - cd docs
  81. - build-docs -t $DOCTGT -bs $DOC_BUILDERS -l $DOCLANG build
  82. parallel:
  83. matrix:
  84. - DOCLANG: ["en", "zh_CN"]
  85. DOCTGT: ["esp32", "esp32s2", "esp32s3", "esp32c3", "esp32c2", "esp32c6", "esp32h2", "esp32p4"]
  86. check_docs_gh_links:
  87. image: $ESP_IDF_DOC_ENV_IMAGE
  88. extends:
  89. - .pre_check_template
  90. - .doc-rules:build:docs-full
  91. script:
  92. - cd docs
  93. - build-docs gh-linkcheck
  94. # Doc jobs have a lot of special cases, we specify rules here directly instead
  95. # in dependencies.yml to simplify things
  96. build_docs_html_full:
  97. extends:
  98. - .build_docs_template
  99. - .doc-rules:build:docs-full
  100. needs:
  101. - job: fast_template_app
  102. artifacts: false
  103. optional: true
  104. artifacts:
  105. when: always
  106. paths:
  107. - docs/_build/*/*/*.txt
  108. - docs/_build/*/*/html/*
  109. expire_in: 4 days
  110. variables:
  111. DOC_BUILDERS: "html"
  112. build_docs_html_full_prod:
  113. extends:
  114. - .build_docs_template
  115. - .doc-rules:build:docs-full-prod
  116. dependencies: [] # Stop build_docs jobs from downloading all previous job's artifacts
  117. artifacts:
  118. when: always
  119. paths:
  120. - docs/_build/*/*/*.txt
  121. - docs/_build/*/*/html/*
  122. expire_in: 4 days
  123. variables:
  124. DOC_BUILDERS: "html"
  125. build_docs_html_partial:
  126. extends:
  127. - .build_docs_template
  128. - .doc-rules:build:docs-partial
  129. needs:
  130. - job: fast_template_app
  131. artifacts: false
  132. optional: true
  133. artifacts:
  134. when: always
  135. paths:
  136. - docs/_build/*/*/*.txt
  137. - docs/_build/*/*/html/*
  138. expire_in: 4 days
  139. variables:
  140. DOC_BUILDERS: "html"
  141. parallel:
  142. matrix:
  143. - DOCLANG: "en"
  144. DOCTGT: "esp32"
  145. - DOCLANG: "zh_CN"
  146. DOCTGT: "esp32p4"
  147. build_docs_pdf:
  148. extends:
  149. - .build_docs_template
  150. - .doc-rules:build:docs-full
  151. needs:
  152. - job: fast_template_app
  153. artifacts: false
  154. optional: true
  155. artifacts:
  156. when: always
  157. paths:
  158. - docs/_build/*/*/latex/*
  159. expire_in: 4 days
  160. variables:
  161. DOC_BUILDERS: "latex"
  162. build_docs_pdf_prod:
  163. extends:
  164. - .build_docs_template
  165. - .doc-rules:build:docs-full-prod
  166. dependencies: [] # Stop build_docs jobs from downloading all previous job's artifacts
  167. artifacts:
  168. when: always
  169. paths:
  170. - docs/_build/*/*/latex/*
  171. expire_in: 4 days
  172. variables:
  173. DOC_BUILDERS: "latex"
  174. .deploy_docs_template:
  175. image: $ESP_IDF_DOC_ENV_IMAGE
  176. variables:
  177. DOCS_BUILD_DIR: "${IDF_PATH}/docs/_build/"
  178. PYTHONUNBUFFERED: 1
  179. stage: test_deploy
  180. tags:
  181. - deploy
  182. - shiny
  183. script:
  184. - add_doc_server_ssh_keys $DOCS_DEPLOY_PRIVATEKEY $DOCS_DEPLOY_SERVER $DOCS_DEPLOY_SERVER_USER
  185. - export GIT_VER=$(git describe --always ${PIPELINE_COMMIT_SHA} --)
  186. - deploy-docs
  187. # stage: test_deploy
  188. deploy_docs_preview:
  189. extends:
  190. - .deploy_docs_template
  191. rules:
  192. - <<: *if-label-build_docs
  193. - <<: *if-label-docs_full
  194. - <<: *if-dev-push
  195. changes: *patterns-docs-preview
  196. needs:
  197. - job: build_docs_html_partial
  198. optional: true
  199. - job: build_docs_html_full
  200. optional: true
  201. - job: build_docs_pdf
  202. optional: true
  203. variables:
  204. TYPE: "preview"
  205. # older branches use DOCS_DEPLOY_KEY, DOCS_SERVER, DOCS_SERVER_USER, DOCS_PATH for preview server so we keep these names for 'preview'
  206. DOCS_DEPLOY_PRIVATEKEY: "$DOCS_DEPLOY_KEY"
  207. DOCS_DEPLOY_SERVER: "$DOCS_SERVER"
  208. DOCS_DEPLOY_SERVER_USER: "$DOCS_SERVER_USER"
  209. DOCS_DEPLOY_PATH: "$DOCS_PATH"
  210. DOCS_DEPLOY_URL_BASE: "https://$DOCS_PREVIEW_SERVER_URL/docs/esp-idf"
  211. # stage: post_deploy
  212. deploy_docs_production:
  213. # The DOCS_PROD_* variables used by this job are "Protected" so these branches must all be marked "Protected" in Gitlab settings
  214. extends:
  215. - .deploy_docs_template
  216. - .doc-rules:build:docs-full-prod
  217. stage: post_deploy
  218. dependencies: # set dependencies to null to avoid missing artifacts issue
  219. needs: # ensure runs after push_to_github succeeded
  220. - build_docs_html_full_prod
  221. - build_docs_pdf_prod
  222. - job: push_to_github
  223. artifacts: false
  224. variables:
  225. TYPE: "preview"
  226. DOCS_DEPLOY_PRIVATEKEY: "$DOCS_PROD_DEPLOY_KEY"
  227. DOCS_DEPLOY_SERVER: "$DOCS_PROD_SERVER"
  228. DOCS_DEPLOY_SERVER_USER: "$DOCS_PROD_SERVER_USER"
  229. DOCS_DEPLOY_PATH: "$DOCS_PROD_PATH"
  230. DOCS_DEPLOY_URL_BASE: "https://docs.espressif.com/projects/esp-idf"
  231. DEPLOY_STABLE: 1
  232. check_doc_links:
  233. extends:
  234. - .build_docs_template
  235. - .doc-rules:build:docs-full-prod
  236. stage: post_deploy
  237. needs:
  238. - job: deploy_docs_production
  239. artifacts: false
  240. tags: ["build", "amd64", "internet"]
  241. artifacts:
  242. when: always
  243. paths:
  244. - docs/_build/*/*/*.txt
  245. - docs/_build/*/*/linkcheck/*.txt
  246. expire_in: 1 week
  247. allow_failure: true
  248. script:
  249. - cd docs
  250. - build-docs -t $DOCTGT -l $DOCLANG linkcheck