mirror of
https://github.com/espressif/esp-sr.git
synced 2025-09-15 15:28:44 +08:00
347 lines
8.8 KiB
YAML
347 lines
8.8 KiB
YAML
stages:
|
|
- build
|
|
- target_test
|
|
- build_docs
|
|
- deploy
|
|
|
|
variables:
|
|
# Versioned esp-idf-doc env image to use for all document building jobs
|
|
ESP_DOCS_ENV_IMAGE: "$CI_DOCKER_REGISTRY/esp-idf-doc-env-v5.3:1-1"
|
|
ESP_SR_PATH: "$CI_PROJECT_DIR"
|
|
BATCH_BUILD: "1"
|
|
V: "0"
|
|
IDF_CI_BUILD: "1"
|
|
DOCKER_TARGET_TEST_v5_0_ENV_IMAGE: "$CI_DOCKER_REGISTRY/target-test-env-v5.3:1"
|
|
|
|
before_script:
|
|
# add gitlab ssh key
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
|
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
|
- git --version
|
|
- git submodule update --init --recursive --force
|
|
- pip install idf_build_apps
|
|
|
|
.if-protected: &if-protected
|
|
if: '($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/)'
|
|
|
|
.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_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "merge_request_event")'
|
|
|
|
.if-label-build: &if-label-build
|
|
if: '$CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*build(?:,[^,\n\r]+)*$/i'
|
|
|
|
.patterns-test_esp_tts: &patterns-test_esp_tts
|
|
- "esp-tts/**/*"
|
|
- "test_apps/esp-tts/**/*"
|
|
- "CMakeList.txt"
|
|
|
|
.patterns-test_esp_sr: &patterns-test_esp_sr
|
|
- "lib/**/*"
|
|
- "include/**/*"
|
|
- "src/**/*"
|
|
- "model/**/*"
|
|
- "test_apps/esp-sr/**/*"
|
|
- "CMakeList.txt"
|
|
|
|
.patterns-test_esp_sr: &patterns-test_esp32c5
|
|
- "lib/esp32c5/*"
|
|
- "lib/esp32c3/*"
|
|
- "lib/esp32c6/*"
|
|
- "lib/esp32s2/*"
|
|
- "include/esp32c5/*"
|
|
- "src/**/*"
|
|
- "model/**/*"
|
|
- "test_apps/esp-sr/**/*"
|
|
- "CMakeList.txt"
|
|
|
|
.patterns-build_system: &patterns-build_system
|
|
- "test_apps/build_apps.py"
|
|
- "conftest.py"
|
|
- "pytest.ini"
|
|
- "CMakeList.txt"
|
|
|
|
.patterns-build_docs: &patterns-build_docs
|
|
- "docs/**/*"
|
|
|
|
|
|
.rules:build:test_esp_sr:
|
|
rules:
|
|
- <<: *if-protected
|
|
- <<: *if-label-build
|
|
- <<: *if-dev-push
|
|
changes: *patterns-build_system
|
|
- <<: *if-dev-push
|
|
changes: *patterns-test_esp_sr
|
|
|
|
.rules:build:test_esp_tts:
|
|
rules:
|
|
- <<: *if-protected
|
|
- <<: *if-label-build
|
|
- <<: *if-dev-push
|
|
changes: *patterns-build_system
|
|
- <<: *if-dev-push
|
|
changes: *patterns-test_esp_tts
|
|
|
|
.rules:build:test_esp32c5:
|
|
rules:
|
|
- <<: *if-protected
|
|
- <<: *if-label-build
|
|
- <<: *if-dev-push
|
|
changes: *patterns-build_system
|
|
- <<: *if-dev-push
|
|
changes: *patterns-test_esp32c5
|
|
|
|
.rules:build_docs:docs:
|
|
rules:
|
|
- <<: *if-protected
|
|
- <<: *if-label-build
|
|
- <<: *if-dev-push
|
|
changes: *patterns-build_docs
|
|
|
|
.rules:deploy:docs_preview:
|
|
rules:
|
|
- <<: *if-label-build
|
|
- <<: *if-dev-push
|
|
changes: *patterns-build_docs
|
|
|
|
.rules:deploy:docs_production:
|
|
rules:
|
|
- <<: *if-protected
|
|
|
|
.build_test_template:
|
|
stage: build
|
|
tags:
|
|
- build
|
|
image: ${IMAGE}
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- "**/build*/*.bin"
|
|
# upload to s3 server to save the artifacts size
|
|
- "**/build*/*.map"
|
|
- "**/build*/*.elf"
|
|
- "**/build*/flasher_args.json"
|
|
- "**/build*/flash_project_args"
|
|
- "**/build*/config/sdkconfig.json"
|
|
- "**/build*/bootloader/*.bin"
|
|
- "**/build*/bootloader/*.elf"
|
|
- "**/build*/partition_table/*.bin"
|
|
- "**/build*/srmodels/*.bin"
|
|
expire_in: 1 week
|
|
variables:
|
|
EXAMPLES_PATH: "test_apps"
|
|
script:
|
|
- python ./test_apps/build_apps.py $EXAMPLES_PATH -t all
|
|
|
|
build_esp_sr:
|
|
extends:
|
|
- .build_test_template
|
|
- .rules:build:test_esp_sr
|
|
parallel:
|
|
matrix:
|
|
- IMAGE: [espressif/idf:release-v5.3, espressif/idf:latest]
|
|
EXAMPLES_PATH: "test_apps/esp-sr"
|
|
|
|
|
|
build_esp_tts:
|
|
extends:
|
|
- .build_test_template
|
|
- .rules:build:test_esp_tts
|
|
parallel:
|
|
matrix:
|
|
- IMAGE: [espressif/idf:release-v5.3, espressif/idf:latest]
|
|
EXAMPLES_PATH: "test_apps/esp-tts"
|
|
|
|
build_esp32c5:
|
|
extends:
|
|
- .build_test_template
|
|
- .rules:build:test_esp32c5
|
|
parallel:
|
|
matrix:
|
|
- IMAGE: [espressif/idf:release-v5.4, espressif/idf:latest]
|
|
EXAMPLES_PATH: "test_apps/esp32c5"
|
|
|
|
.test_template: &test_template
|
|
image: DOCKER_TARGET_TEST_v5_0_ENV_IMAGE
|
|
stage: target_test
|
|
timeout: 10 hour
|
|
variables:
|
|
GIT_DEPTH: 1
|
|
SUBMODULES_TO_FETCH: "none"
|
|
cache:
|
|
# Usually do not need submodule-cache in target_test
|
|
- key: pip-cache
|
|
paths:
|
|
- .cache/pip
|
|
policy: pull
|
|
|
|
.pytest_template:
|
|
<<: *test_template
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- XUNIT_RESULT.xml
|
|
- pytest_log/
|
|
reports:
|
|
junit: XUNIT_RESULT.xml
|
|
expire_in: 4 days
|
|
variables:
|
|
TEST_TARGET: 'esp32s3'
|
|
TEST_FOLDER: 'test_apps'
|
|
TEST_ENV: 'esp32s3'
|
|
script:
|
|
- pip install -r test_apps/requirements.txt
|
|
- pytest ${TEST_FOLDER} --target ${TEST_TARGET} --env ${TEST_ENV} --junitxml=XUNIT_RESULT.xml
|
|
|
|
test_esp_sr:
|
|
extends:
|
|
- .pytest_template
|
|
- .rules:build:test_esp_sr
|
|
needs:
|
|
- job: "build_esp_sr"
|
|
artifacts: true
|
|
optional: true
|
|
parallel:
|
|
matrix:
|
|
- TEST_TARGET: esp32s3
|
|
TEST_ENV: esp32s3
|
|
tags:
|
|
- ${TEST_ENV}
|
|
image: $DOCKER_TARGET_TEST_v5_3_ENV_IMAGE
|
|
variables:
|
|
TEST_FOLDER: './test_apps/esp-sr'
|
|
IDF_VERSION: "5.3"
|
|
|
|
test_esp_tts:
|
|
extends:
|
|
- .pytest_template
|
|
- .rules:build:test_esp_tts
|
|
needs:
|
|
- job: "build_esp_tts"
|
|
artifacts: true
|
|
optional: true
|
|
parallel:
|
|
matrix:
|
|
- TEST_TARGET: esp32s3
|
|
TEST_ENV: esp32s3
|
|
tags:
|
|
- ${TEST_ENV}
|
|
image: $DOCKER_TARGET_TEST_v5_3_ENV_IMAGE
|
|
variables:
|
|
TEST_FOLDER: './test_apps/esp-tts'
|
|
IDF_VERSION: "5.3"
|
|
|
|
.build_doc_template:
|
|
stage: build_docs
|
|
image: $ESP_DOCS_ENV_IMAGE
|
|
|
|
build_esp_sr_html:
|
|
extends:
|
|
- .build_doc_template
|
|
- .rules:build_docs:docs
|
|
variables:
|
|
DOCS_DIR: $CI_PROJECT_DIR/docs
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $DOCS_DIR/_build/*/*/html/*
|
|
- $DOCS_DIR/_build/*/*/*.txt
|
|
expire_in: 4 days
|
|
script:
|
|
- cd $DOCS_DIR
|
|
- ./check_lang_folder_sync.sh
|
|
- pip install -r requirements.txt
|
|
- build-docs --skip-reqs-check -l $DOCLANG -t $DOCTGT
|
|
- echo "ESP-SR documentation preview available at $CI_JOB_URL/artifacts/file/docs/_build/$DOCLANG/$DOCTGT/html/index.html"
|
|
parallel:
|
|
matrix:
|
|
- DOCLANG: ["en", "zh_CN"]
|
|
DOCTGT: ["esp32", "esp32s3", "esp32p4"]
|
|
|
|
build_esp_sr_pdf:
|
|
extends:
|
|
- .build_doc_template
|
|
- .rules:build_docs:docs
|
|
variables:
|
|
DOCS_DIR: $CI_PROJECT_DIR/docs
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $DOCS_DIR/_build/*/*/latex/*
|
|
- $DOCS_DIR/_build/*/*/*.txt
|
|
expire_in: 4 days
|
|
script:
|
|
- cd $DOCS_DIR
|
|
- ./check_lang_folder_sync.sh
|
|
- pip install -r requirements.txt
|
|
- build-docs --skip-reqs-check -bs latex -l $DOCLANG -t $DOCTGT
|
|
parallel:
|
|
matrix:
|
|
- DOCLANG: ["en", "zh_CN"]
|
|
DOCTGT: ["esp32", "esp32s3", "esp32p4"]
|
|
|
|
|
|
.deploy_docs_template:
|
|
stage: deploy
|
|
image: $ESP_DOCS_ENV_IMAGE
|
|
tags:
|
|
- deploy_docs
|
|
needs:
|
|
- build_esp_sr_html
|
|
- build_esp_sr_pdf
|
|
script:
|
|
- source ${CI_PROJECT_DIR}/ci/utils.sh
|
|
- add_doc_server_ssh_keys $DOCS_DEPLOY_PRIVATEKEY $DOCS_DEPLOY_SERVER $DOCS_DEPLOY_SERVER_USER
|
|
- export GIT_VER=$(git describe --always)
|
|
- pip install -r ${CI_PROJECT_DIR}/docs/requirements.txt
|
|
- deploy-docs
|
|
|
|
deploy_docs_preview:
|
|
extends:
|
|
- .deploy_docs_template
|
|
- .rules:deploy:docs_preview
|
|
variables:
|
|
TYPE: "preview"
|
|
DOCS_BUILD_DIR: "${CI_PROJECT_DIR}/docs/_build/"
|
|
DOCS_DEPLOY_PRIVATEKEY: "$DOCS_PREVIEW_DEPLOY_KEY"
|
|
DOCS_DEPLOY_SERVER: "$DOCS_PREVIEW_SERVER"
|
|
DOCS_DEPLOY_SERVER_USER: "$DOCS_PREVIEW_SERVER_USER"
|
|
DOCS_DEPLOY_PATH: "$DOCS_PREVIEW_PATH"
|
|
DOCS_DEPLOY_URL_BASE: "$DOCS_PREVIEW_URL_BASE"
|
|
|
|
deploy_docs_production:
|
|
extends:
|
|
- .deploy_docs_template
|
|
- .rules:deploy:docs_production
|
|
variables:
|
|
TYPE: "production"
|
|
DOCS_BUILD_DIR: "${CI_PROJECT_DIR}/docs/_build/"
|
|
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-sr"
|
|
|
|
push_to_github:
|
|
stage: deploy
|
|
image: $CI_DOCKER_REGISTRY/esp-env-v4.4:1
|
|
tags:
|
|
- deploy
|
|
when: on_success
|
|
only:
|
|
- master
|
|
- /^release\/v/
|
|
script:
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo -n $GH_PUSH_KEY > ~/.ssh/id_rsa_base64
|
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
|
- git remote remove github &>/dev/null || true
|
|
- git remote add github git@github.com:espressif/esp-sr.git
|
|
- git push github "${CI_COMMIT_SHA}:refs/heads/${CI_COMMIT_REF_NAME}" |