docs.yml 6.2 KB

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