| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- .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")'
- .if-schedule: &if-schedule
- if: '$CI_PIPELINE_SOURCE == "schedule"'
- .doc-rules:build:docs-full:
- rules:
- - <<: *if-qa-test-tag
- when: never
- - <<: *if-schedule
- - <<: *if-label-build_docs
- - <<: *if-label-docs_full
- - <<: *if-dev-push
- changes: *patterns-docs-full
- .doc-rules:build:docs-full-prod:
- rules:
- - <<: *if-qa-test-tag
- when: never
- - <<: *if-protected-no_label
- .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
- script:
- - 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", "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
- needs:
- - job: fast_template_app
- artifacts: false
- optional: true
- artifacts:
- when: always
- paths:
- - docs/_build/*/*/*.txt
- - docs/_build/*/*/html/*
- expire_in: 4 days
- variables:
- DOC_BUILDERS: "html"
- build_docs_html_full_prod:
- extends:
- - .build_docs_template
- - .doc-rules:build:docs-full-prod
- dependencies: [] # Stop build_docs jobs from downloading all previous job's artifacts
- 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
- needs:
- - job: fast_template_app
- artifacts: false
- optional: true
- 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"
- build_docs_pdf:
- extends:
- - .build_docs_template
- - .doc-rules:build:docs-full
- needs:
- - job: fast_template_app
- artifacts: false
- optional: true
- artifacts:
- when: always
- paths:
- - docs/_build/*/*/latex/*
- expire_in: 4 days
- variables:
- DOC_BUILDERS: "latex"
- build_docs_pdf_prod:
- extends:
- - .build_docs_template
- - .doc-rules:build:docs-full-prod
- dependencies: [] # Stop build_docs jobs from downloading all previous job's artifacts
- artifacts:
- when: always
- paths:
- - docs/_build/*/*/latex/*
- expire_in: 4 days
- variables:
- DOC_BUILDERS: "latex"
- .deploy_docs_template:
- image: $ESP_IDF_DOC_ENV_IMAGE
- variables:
- DOCS_BUILD_DIR: "${IDF_PATH}/docs/_build/"
- PYTHONUNBUFFERED: 1
- stage: test_deploy
- tags:
- - deploy
- - shiny
- script:
- - 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
- - job: build_docs_pdf
- 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
- - .doc-rules:build:docs-full-prod
- 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_prod
- - build_docs_pdf_prod
- - 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
- - .doc-rules:build:docs-full-prod
- 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
|