From 7177035a70bf15333ca35a9783cc1781c994c02e Mon Sep 17 00:00:00 2001 From: "igor.udot" Date: Thu, 12 Mar 2026 17:24:26 +0800 Subject: [PATCH] ci: use build-docs template --- .gitlab-ci.yml | 16 ++- .gitlab/ci/docs.yml | 225 ------------------------------------------- .gitlab/ci/rules.yml | 3 + 3 files changed, 18 insertions(+), 226 deletions(-) delete mode 100644 .gitlab/ci/docs.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 39cfb2fe3b1..ca6b8ae1cf3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,7 +26,6 @@ include: - '.gitlab/ci/rules.yml' - ".gitlab/ci/manual_gate.yml" - '.gitlab/ci/upload_cache.yml' - - '.gitlab/ci/docs.yml' - '.gitlab/ci/static-code-analysis.yml' - '.gitlab/ci/pre_commit.yml' - '.gitlab/ci/pre_check.yml' @@ -36,3 +35,18 @@ include: - '.gitlab/ci/post_deploy.yml' - '.gitlab/ci/retry_failed_jobs.yml' - '.gitlab/ci/test-win.yml' + + - project: "ci/actions/common" + file: + - "templates/idf/deploy-docs.yml" + - project: "ci/actions/common" + file: "templates/idf/build-docs.yml" + inputs: + full-build-matrix: + - DOCLANG: ["en", "zh_CN"] + DOCTGT: ["esp32", "esp32s2", "esp32s3", "esp32c3", "esp32c2", "esp32c6", "esp32c61", "esp32c5","esp32h2", "esp32p4"] + partial-build-matrix: + - DOCLANG: "en" + DOCTGT: "esp32" + - DOCLANG: "zh_CN" + DOCTGT: "esp32p4" diff --git a/.gitlab/ci/docs.yml b/.gitlab/ci/docs.yml deleted file mode 100644 index 1d068753a29..00000000000 --- a/.gitlab/ci/docs.yml +++ /dev/null @@ -1,225 +0,0 @@ -.patterns-docs-full: &patterns-docs-full - - ".gitlab/ci/docs.yml" - - "docs/**/*" - - "**/*.rst" - - "CONTRIBUTING.rst" - - "**/soc_caps.h" - -.patterns-docs-partial: &patterns-docs-partial - - "components/**/*.h" - - "components/**/Kconfig*" - - "components/**/CMakeList.txt" - - "components/**/sdkconfig*" - - "tools/tools.json" - - "tools/idf_tools.py" - -.patterns-example-readme: &patterns-example-readme - - "examples/**/*.md" - -.patterns-docs-preview: &patterns-docs-preview - - "docs/**/*" - -.if-protected: &if-protected - if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/)' - -.if-protected-no_label: &if-protected-no_label - if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/) && $BOT_TRIGGER_WITH_LABEL == null' - -.if-qa-test-tag: &if-qa-test-tag - if: '$CI_COMMIT_TAG =~ /^qa-test/' - -.if-label-build_docs: &if-label-build_docs - if: '$BOT_LABEL_BUILD_DOCS || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*build_docs(?:,[^,\n\r]+)*$/i' - -.if-label-docs_full: &if-label-docs_full - if: '$BOT_LABEL_DOCS_FULL || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*docs_full(?:,[^,\n\r]+)*$/i' - -.if-dev-push: &if-dev-push - if: '$CI_COMMIT_REF_NAME != "master" && $CI_COMMIT_BRANCH !~ /^release\/v/ && $CI_COMMIT_TAG !~ /^v\d+\.\d+(\.\d+)?($|-)/ && $CI_COMMIT_TAG !~ /^qa-test/ && ($CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "merge_request_event")' - -.doc-rules:build:docs-full: - rules: - - <<: *if-qa-test-tag - when: never - - <<: *if-protected - - <<: *if-label-build_docs - - <<: *if-label-docs_full - - <<: *if-dev-push - changes: *patterns-docs-full - -.doc-rules:build:docs-partial: - rules: - - <<: *if-qa-test-tag - when: never - - <<: *if-dev-push - changes: *patterns-docs-full - when: never - - <<: *if-dev-push - changes: *patterns-docs-partial - -# stage: pre_check -check_readme_links: - extends: - - .pre_check_template - tags: ["build", "amd64", "internet"] - allow_failure: true - rules: - - <<: *if-protected - - <<: *if-dev-push - changes: *patterns-example-readme - script: - - python ${IDF_PATH}/tools/ci/check_readme_links.py - -check_docs_lang_sync: - extends: - - .pre_check_template - - .doc-rules:build:docs-full - script: - - cd docs - - ./check_lang_folder_sync.sh - -.build_docs_template: - image: $ESP_IDF_DOC_ENV_IMAGE - stage: build_doc - tags: - - build_docs - needs: - - job: fast_template_app - artifacts: false - optional: true - script: - - if [ -n "${BREATHE_ALT_INSTALL_URL}" ]; then pip uninstall -y breathe && pip install -U ${BREATHE_ALT_INSTALL_URL}; fi - - cd docs - - build-docs -t $DOCTGT -bs $DOC_BUILDERS -l $DOCLANG build - parallel: - matrix: - - DOCLANG: ["en", "zh_CN"] - DOCTGT: ["esp32", "esp32s2", "esp32s3", "esp32c3", "esp32c2", "esp32c6", "esp32c61", "esp32c5","esp32h2", "esp32p4"] - -check_docs_gh_links: - image: $ESP_IDF_DOC_ENV_IMAGE - extends: - - .pre_check_template - - .doc-rules:build:docs-full - script: - - cd docs - - build-docs gh-linkcheck - -# Doc jobs have a lot of special cases, we specify rules here directly instead -# in dependencies.yml to simplify things -build_docs_html_full: - extends: - - .build_docs_template - - .doc-rules:build:docs-full - artifacts: - when: always - paths: - - docs/_build/*/*/*.txt - - docs/_build/*/*/html/* - expire_in: 4 days - variables: - DOC_BUILDERS: "html" - -build_docs_html_partial: - extends: - - .build_docs_template - - .doc-rules:build:docs-partial - artifacts: - when: always - paths: - - docs/_build/*/*/*.txt - - docs/_build/*/*/html/* - expire_in: 4 days - variables: - DOC_BUILDERS: "html" - parallel: - matrix: - - DOCLANG: "en" - DOCTGT: "esp32" - - DOCLANG: "zh_CN" - DOCTGT: "esp32p4" - -.deploy_docs_template: - image: $ESP_IDF_DOC_ENV_IMAGE - variables: - DOCS_BUILD_DIR: "${IDF_PATH}/docs/_build/" - PYTHONUNBUFFERED: 1 - # ensure all tags are fetched, need to know the latest/stable tag for the docs - GIT_STRATEGY: clone - GIT_DEPTH: 0 - stage: test_deploy - tags: - - deploy - - shiny - script: - # ensure all tags are fetched, need to know the latest/stable tag for the docs - - git fetch --tags --prune - - add_doc_server_ssh_keys $DOCS_DEPLOY_PRIVATEKEY $DOCS_DEPLOY_SERVER $DOCS_DEPLOY_SERVER_USER - - export GIT_VER=$(git describe --always ${PIPELINE_COMMIT_SHA} --) - - deploy-docs - -# stage: test_deploy -deploy_docs_preview: - extends: - - .deploy_docs_template - rules: - - <<: *if-label-build_docs - - <<: *if-label-docs_full - - <<: *if-dev-push - changes: *patterns-docs-preview - needs: - - job: build_docs_html_partial - optional: true - - job: build_docs_html_full - optional: true - variables: - TYPE: "preview" - # older branches use DOCS_DEPLOY_KEY, DOCS_SERVER, DOCS_SERVER_USER, DOCS_PATH for preview server so we keep these names for 'preview' - DOCS_DEPLOY_PRIVATEKEY: "$DOCS_DEPLOY_KEY" - DOCS_DEPLOY_SERVER: "$DOCS_SERVER" - DOCS_DEPLOY_SERVER_USER: "$DOCS_SERVER_USER" - DOCS_DEPLOY_PATH: "$DOCS_PATH" - DOCS_DEPLOY_URL_BASE: "https://$DOCS_PREVIEW_SERVER_URL/docs/esp-idf" - -# stage: post_deploy -deploy_docs_production: - # The DOCS_PROD_* variables used by this job are "Protected" so these branches must all be marked "Protected" in Gitlab settings - extends: - - .deploy_docs_template - rules: - - <<: *if-protected-no_label - stage: post_deploy - dependencies: # set dependencies to null to avoid missing artifacts issue - needs: # ensure runs after push_to_github succeeded - - build_docs_html_full - - job: push_to_github - artifacts: false - variables: - TYPE: "preview" - DOCS_DEPLOY_PRIVATEKEY: "$DOCS_PROD_DEPLOY_KEY" - DOCS_DEPLOY_SERVER: "$DOCS_PROD_SERVER" - DOCS_DEPLOY_SERVER_USER: "$DOCS_PROD_SERVER_USER" - DOCS_DEPLOY_PATH: "$DOCS_PROD_PATH" - DOCS_DEPLOY_URL_BASE: "https://docs.espressif.com/projects/esp-idf" - DEPLOY_STABLE: 1 - -check_doc_links: - extends: - - .build_docs_template - rules: - - <<: *if-protected-no_label - stage: post_deploy - needs: - - job: deploy_docs_production - artifacts: false - tags: ["build", "amd64", "internet"] - artifacts: - when: always - paths: - - docs/_build/*/*/*.txt - - docs/_build/*/*/linkcheck/*.txt - expire_in: 1 week - allow_failure: true - script: - - cd docs - - build-docs -t $DOCTGT -l $DOCLANG linkcheck diff --git a/.gitlab/ci/rules.yml b/.gitlab/ci/rules.yml index 7b348fbe095..1bb41066831 100644 --- a/.gitlab/ci/rules.yml +++ b/.gitlab/ci/rules.yml @@ -169,6 +169,9 @@ .if-protected: &if-protected if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/) || $CI_COMMIT_TAG =~ /^qa-test/' +.if-protected-deploy: &if-protected-deploy + 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 == "api")' + .if-protected-no_label: &if-protected-no_label if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/) && $BOT_TRIGGER_WITH_LABEL == null'