docs.yml 5.9 KB

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