docs.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. # stage: pre_check
  2. check_readme_links:
  3. extends:
  4. - .pre_check_job_template
  5. - .rules:build:docs
  6. tags: ["build", "amd64", "internet"]
  7. allow_failure: true
  8. script:
  9. - python ${IDF_PATH}/tools/ci/check_readme_links.py
  10. check_docs_lang_sync:
  11. extends:
  12. - .pre_check_job_template
  13. - .rules:build:docs
  14. script:
  15. - cd docs
  16. - ./check_lang_folder_sync.sh
  17. .build_docs_template:
  18. image: $ESP_IDF_DOC_ENV_IMAGE
  19. tags:
  20. - build_docs
  21. dependencies: []
  22. script:
  23. - cd docs
  24. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 pip install -r requirements.txt
  25. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ./build_docs.py -bs $DOC_BUILDERS -l $DOCLANG -t $DOCTGT build
  26. parallel:
  27. matrix:
  28. - DOCLANG: ["en", "zh_CN"]
  29. DOCTGT: ["esp32", "esp32s2", "esp32c3"]
  30. check_docs_gh_links:
  31. extends:
  32. - .pre_check_job_template
  33. - .build_docs_template
  34. - .rules:build:docs
  35. script:
  36. - cd docs
  37. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 pip install -r requirements.txt
  38. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ./build_docs.py gh-linkcheck
  39. # stage: build_doc
  40. # Add this stage to let the build_docs job run in parallel with build
  41. .build_docs_build_stage_template:
  42. extends:
  43. - .build_docs_template
  44. - .rules:build:docs
  45. stage: build_doc
  46. needs:
  47. - job: check_docs_lang_sync
  48. artifacts: false
  49. - job: check_docs_gh_links
  50. artifacts: false
  51. build_docs_html:
  52. extends:
  53. - .build_docs_build_stage_template
  54. artifacts:
  55. when: always
  56. paths:
  57. - docs/_build/*/*/*.txt
  58. - docs/_build/*/*/html/*
  59. expire_in: 4 days
  60. variables:
  61. DOC_BUILDERS: "html"
  62. build_docs_pdf:
  63. extends:
  64. - .build_docs_build_stage_template
  65. - .rules:build:docs:label-only
  66. artifacts:
  67. when: always
  68. paths:
  69. - docs/_build/*/*/latex/*
  70. expire_in: 4 days
  71. variables:
  72. DOC_BUILDERS: "latex"
  73. .deploy_docs_template:
  74. extends:
  75. - .before_script_no_sync_submodule
  76. image: $ESP_IDF_DOC_ENV_IMAGE
  77. stage: test_deploy
  78. tags:
  79. - deploy
  80. - shiny
  81. variables:
  82. DOCS_BUILD_DIR: "${IDF_PATH}/docs/_build/"
  83. PYTHONUNBUFFERED: 1
  84. dependencies: []
  85. script:
  86. - add_doc_server_ssh_keys $DOCS_DEPLOY_PRIVATEKEY $DOCS_DEPLOY_SERVER $DOCS_DEPLOY_SERVER_USER
  87. - export GIT_VER=$(git describe --always)
  88. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ${IDF_PATH}/tools/ci/deploy_docs.py
  89. # stage: test_deploy
  90. deploy_docs_preview:
  91. extends:
  92. - .deploy_docs_template
  93. - .rules:build:docs:label-only-preview
  94. dependencies: # set dependencies to null to avoid missing artifacts issue
  95. needs:
  96. - build_docs_html
  97. - build_docs_pdf
  98. variables:
  99. TYPE: "preview"
  100. # older branches use DOCS_DEPLOY_KEY, DOCS_SERVER, DOCS_SERVER_USER, DOCS_PATH for preview server so we keep these names for 'preview'
  101. DOCS_DEPLOY_PRIVATEKEY: "$DOCS_DEPLOY_KEY"
  102. DOCS_DEPLOY_SERVER: "$DOCS_SERVER"
  103. DOCS_DEPLOY_SERVER_USER: "$DOCS_SERVER_USER"
  104. DOCS_DEPLOY_PATH: "$DOCS_PATH"
  105. DOCS_DEPLOY_URL_BASE: "https://$CI_DOCKER_REGISTRY/docs/esp-idf"
  106. # stage: post_deploy
  107. deploy_docs_production:
  108. # The DOCS_PROD_* variables used by this job are "Protected" so these branches must all be marked "Protected" in Gitlab settings
  109. extends:
  110. - .deploy_docs_template
  111. - .rules:build:docs-production
  112. stage: post_deploy
  113. dependencies: # set dependencies to null to avoid missing artifacts issue
  114. needs: # ensure runs after push_to_github succeeded
  115. - build_docs_html
  116. - build_docs_pdf
  117. - job: push_to_github
  118. artifacts: false
  119. variables:
  120. TYPE: "preview"
  121. DOCS_DEPLOY_PRIVATEKEY: "$DOCS_PROD_DEPLOY_KEY"
  122. DOCS_DEPLOY_SERVER: "$DOCS_PROD_SERVER"
  123. DOCS_DEPLOY_SERVER_USER: "$DOCS_PROD_SERVER_USER"
  124. DOCS_DEPLOY_PATH: "$DOCS_PROD_PATH"
  125. DOCS_DEPLOY_URL_BASE: "https://docs.espressif.com/projects/esp-idf"
  126. check_doc_links:
  127. extends:
  128. - .build_docs_template
  129. - .rules:protected
  130. stage: post_deploy
  131. tags: ["build", "amd64", "internet"]
  132. artifacts:
  133. when: always
  134. paths:
  135. - docs/_build/*/*/*.txt
  136. - docs/_build/*/*/linkcheck/*.txt
  137. expire_in: 1 week
  138. allow_failure: true
  139. script:
  140. - cd docs
  141. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 pip install -r requirements.txt
  142. # At the moment this check will always fail due to multiple known limitations, ignore result
  143. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ./build_docs.py -l $DOCLANG -t $DOCTGT linkcheck || { echo "THERE ARE ISSUES DUE TO KNOWN LIMITATIONS, PLEASE FIX THEM. Nowadays we're ignored them to pass pipeline."; true; }