docs.yml 6.1 KB

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