docs.yml 6.2 KB

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