@@ -0,0 +1,19 @@
|
||||
# The file mainly marks apps with special rules, while other apps are enabled by default
|
||||
|
||||
.disable_test_apps: &disable_test_apps
|
||||
disable:
|
||||
- if: TARGET_DIR_TYPE == "test_apps"
|
||||
|
||||
.disable_example: &disable_example
|
||||
disable:
|
||||
- if: TARGET_DIR_TYPE == "example"
|
||||
|
||||
.disable_test_apps_esp32: &disable_test_apps_esp32
|
||||
disable:
|
||||
- if: TARGET_DIR_TYPE == "test_apps" AND IDF_TARGET == "esp32"
|
||||
|
||||
gmf_core/test_apps:
|
||||
<<: *disable_example
|
||||
|
||||
packages/esp_board_manager:
|
||||
<<: *disable_test_apps_esp32
|
||||
@@ -0,0 +1,72 @@
|
||||
.build_cmake_template: &build_cmake_template
|
||||
stage: build
|
||||
image: ${IMAGE}
|
||||
tags:
|
||||
- multimedia_build
|
||||
parallel: 2
|
||||
interruptible: true
|
||||
dependencies: # set dependencies to null to avoid missing artifacts issue
|
||||
variables:
|
||||
DEEP_CLONE: "false"
|
||||
IDF_FIND_APP_PATH_ARG: "-p"
|
||||
SDKCFG_DEFAULTS: "sdkconfig.defaults.$IDF_TARGET"
|
||||
BASE_FRAMEWORK_PATH: "${IDF_PATH}"
|
||||
BASE_FRAMEWORK: $IDF_REPOSITORY
|
||||
artifacts:
|
||||
paths:
|
||||
- "**/build*/size.json"
|
||||
- "**/build*/build_log.txt"
|
||||
- "**/build*/*.bin"
|
||||
- "**/build*/*.elf"
|
||||
- "**/build*/flasher_args.json"
|
||||
- "**/build*/flash_project_args"
|
||||
- "**/build*/config/sdkconfig.json"
|
||||
- "**/build*/sdkconfig"
|
||||
- "**/build*/bootloader/*.bin"
|
||||
- "**/build*/partition_table/*.bin"
|
||||
- "**/build*/srmodels/*.bin"
|
||||
when: always
|
||||
expire_in: 4 days
|
||||
extends:
|
||||
- .build_template
|
||||
script:
|
||||
- python $CI_PROJECT_DIR/tools/ci/esp_bmgr_pre_build.py --target $IDF_TARGET --board $AUDIO_BOARD --project-path ${EXAMPLES_PATH[@]} --target-dir-type ${TARGET_DIR_TYPE}
|
||||
- run_cmd python $CI_PROJECT_DIR/tools/ci/build_apps.py ${EXAMPLES_PATH[@]} \
|
||||
-t $IDF_TARGET -vv \
|
||||
--target-dir-type ${TARGET_DIR_TYPE} \
|
||||
--build-dir ${IDF_VERSION_TAG}/build_@t_@w \
|
||||
--parallel-count ${parallel##*/} \
|
||||
--parallel-index ${parallel%%/*}
|
||||
|
||||
.matrix_template: &matrix_template
|
||||
parallel:
|
||||
matrix:
|
||||
- IDF_VERSION_TAG: ['v5.4.3']
|
||||
parallel: [ 1/1 ]
|
||||
|
||||
build_examples_esp32_lyrat_mini_v1_1:
|
||||
extends:
|
||||
- .rules:build:protected-merge-requests-pipeline
|
||||
- .build_cmake_template
|
||||
- .matrix_template
|
||||
variables:
|
||||
IDF_TARGET: esp32
|
||||
AUDIO_BOARD: lyrat_mini_v1_1
|
||||
|
||||
.build_examples_esp32s2_kaluga_v1_2:
|
||||
extends:
|
||||
- .rules:build:protected-merge-requests-pipeline
|
||||
- .build_cmake_template
|
||||
- .matrix_template
|
||||
variables:
|
||||
IDF_TARGET: esp32s2
|
||||
AUDIO_BOARD: ''
|
||||
|
||||
build_examples_esp32s3_korvo_v2:
|
||||
extends:
|
||||
- .rules:build:protected-merge-requests-pipeline
|
||||
- .build_cmake_template
|
||||
- .matrix_template
|
||||
variables:
|
||||
IDF_TARGET: esp32s3
|
||||
AUDIO_BOARD: esp32_s3_korvo2_v3
|
||||
@@ -0,0 +1,115 @@
|
||||
variables:
|
||||
BASE_FRAMEWORK_PATH: "${IDF_PATH}"
|
||||
BASE_FRAMEWORK: $IDF_REPOSITORY
|
||||
IDF_TAG_FLAG: true
|
||||
|
||||
.build_gmf_component:
|
||||
interruptible: true
|
||||
variables:
|
||||
TARGET_DIR_TYPE: "test_apps"
|
||||
TEST_DIR: ${CI_PROJECT_DIR}/gmf_core
|
||||
parallel:
|
||||
matrix:
|
||||
- IDF_VERSION_TAG: ['v5.4.3']
|
||||
parallel: [ 1/1 ]
|
||||
extends:
|
||||
- .rules:build:protected-merge-requests-pipeline
|
||||
- .build_template
|
||||
artifacts:
|
||||
paths:
|
||||
- "**/build*/size.json"
|
||||
- "**/build*/build_log.txt"
|
||||
- "**/build*/*.bin"
|
||||
- "**/build*/*.elf"
|
||||
- "**/build*/flasher_args.json"
|
||||
- "**/build*/flash_project_args"
|
||||
- "**/build*/config/sdkconfig.json"
|
||||
- "**/build*/sdkconfig"
|
||||
- "**/build*/bootloader/*.bin"
|
||||
- "**/build*/partition_table/*.bin"
|
||||
- "**/build*/srmodels/*.bin"
|
||||
- "${TEST_DIR}/**/test_apps/*.py"
|
||||
expire_in: 4 days
|
||||
script:
|
||||
- python $CI_PROJECT_DIR/tools/ci/esp_bmgr_pre_build.py --target $IDF_TARGET --board $AUDIO_BOARD --project-path ${TEST_DIR} --target-dir-type ${TARGET_DIR_TYPE}
|
||||
- run_cmd python $CI_PROJECT_DIR/tools/ci/build_apps.py ${TEST_DIR} \
|
||||
-t $IDF_TARGET -vv \
|
||||
--target-dir-type ${TARGET_DIR_TYPE} \
|
||||
--build-dir ${IDF_VERSION_TAG}/build_@t_@w \
|
||||
--parallel-count ${parallel##*/} \
|
||||
--parallel-index ${parallel%%/*}
|
||||
- python $CI_PROJECT_DIR/tools/ci/check_test_cxx_build.py
|
||||
|
||||
.build_ut_gmf_packages:
|
||||
extends:
|
||||
- .build_gmf_component
|
||||
variables:
|
||||
TEST_DIR: ${CI_PROJECT_DIR}/packages
|
||||
|
||||
.build_ut_gmf_elements:
|
||||
extends:
|
||||
- .build_gmf_component
|
||||
variables:
|
||||
TEST_DIR: ${CI_PROJECT_DIR}/elements
|
||||
|
||||
build_ut_gmf_core_esp32:
|
||||
extends:
|
||||
- .build_gmf_component
|
||||
variables:
|
||||
IDF_TARGET: esp32
|
||||
AUDIO_BOARD: lyrat_mini_v1_1
|
||||
|
||||
.build_ut_gmf_core_esp32c3:
|
||||
extends:
|
||||
- .build_gmf_component
|
||||
variables:
|
||||
IDF_TARGET: esp32c3
|
||||
|
||||
build_ut_gmf_core_esp32s3:
|
||||
extends:
|
||||
- .build_gmf_component
|
||||
variables:
|
||||
IDF_TARGET: esp32s3
|
||||
AUDIO_BOARD: esp32_s3_korvo2_v3
|
||||
|
||||
.build_ut_gmf_core_esp32p4:
|
||||
extends:
|
||||
- .build_gmf_component
|
||||
variables:
|
||||
IDF_TARGET: esp32p4
|
||||
AUDIO_BOARD: esp32_p4_function_ev
|
||||
|
||||
build_ut_gmf_elements_esp32:
|
||||
extends:
|
||||
- .build_ut_gmf_elements
|
||||
variables:
|
||||
IDF_TARGET: esp32
|
||||
AUDIO_BOARD: lyrat_mini_v1_1
|
||||
|
||||
build_ut_gmf_elements_esp32s3:
|
||||
extends:
|
||||
- .build_ut_gmf_elements
|
||||
variables:
|
||||
IDF_TARGET: esp32s3
|
||||
AUDIO_BOARD: esp32_s3_korvo2_v3
|
||||
|
||||
.build_ut_gmf_elements_esp32p4:
|
||||
extends:
|
||||
- .build_ut_gmf_elements
|
||||
variables:
|
||||
IDF_TARGET: esp32p4
|
||||
AUDIO_BOARD: esp32_p4_function_ev
|
||||
|
||||
build_ut_gmf_packages_esp32:
|
||||
extends:
|
||||
- .build_ut_gmf_packages
|
||||
variables:
|
||||
IDF_TARGET: esp32
|
||||
AUDIO_BOARD: lyrat_mini_v1_1
|
||||
|
||||
build_ut_gmf_packages_esp32s3:
|
||||
extends:
|
||||
- .build_ut_gmf_packages
|
||||
variables:
|
||||
IDF_TARGET: esp32s3
|
||||
AUDIO_BOARD: esp32_s3_korvo2_v3
|
||||
@@ -0,0 +1,47 @@
|
||||
variables:
|
||||
IDF_TAG_FLAG: true
|
||||
IDF_EXTRA_ACTIONS_PATH: ${CI_PROJECT_DIR}/packages/esp_board_manager
|
||||
|
||||
.update_source: &update_source
|
||||
- source ${CI_PROJECT_DIR}/tools/ci/utils.sh
|
||||
- add_gitlab_ssh_keys
|
||||
- git submodule update --init --recursive --depth 1
|
||||
- git clone --depth 1 -b $IDF_VERSION_TAG $IDF_REPOSITORY $IDF_PATH
|
||||
- fetch_idf_branch $IDF_VERSION_TAG
|
||||
- cd $BASE_FRAMEWORK_PATH
|
||||
- git log -2
|
||||
- common_before_scripts
|
||||
- setup_tools_and_idf_python_venv
|
||||
- set_env_variable
|
||||
- cd ${CI_PROJECT_DIR}
|
||||
|
||||
.build_template:
|
||||
stage: build
|
||||
image: ${IMAGE}
|
||||
interruptible: true
|
||||
tags:
|
||||
- multimedia_build
|
||||
before_script:
|
||||
- *update_source
|
||||
after_script:
|
||||
- find "${TEST_DIR}" -type d \( -name "managed_components" -o -name "build" \) -exec rm -rf {} +
|
||||
|
||||
.target_test_template:
|
||||
stage: target_test
|
||||
image: "$CI_DOCKER_REGISTRY/target-test-env-v5.4:2"
|
||||
interruptible: true
|
||||
timeout: 1 hour
|
||||
retry: 2
|
||||
cache:
|
||||
# Usually do not need submodule-cache in target_test
|
||||
- key: pip-cache
|
||||
paths:
|
||||
- .cache/pip
|
||||
policy: pull
|
||||
before_script:
|
||||
- source ${CI_PROJECT_DIR}/tools/ci/utils.sh
|
||||
- add_gitlab_ssh_keys
|
||||
- git clone --depth 1 -b $IDF_VERSION_TAG $IDF_REPOSITORY $IDF_PATH
|
||||
- check_idf_version $IDF_VERSION_TAG
|
||||
- export PYTHONPATH="$IDF_PATH/tools:$IDF_PATH/tools/ci/python_packages:$PYTHONPATH"
|
||||
- export PYTHONPATH="$CI_PROJECT_DIR/tools:$PYTHONPATH"
|
||||
@@ -0,0 +1,21 @@
|
||||
push_to_github:
|
||||
stage: deploy
|
||||
rules:
|
||||
- if:
|
||||
'($CI_COMMIT_REF_NAME == "main" ||
|
||||
$CI_COMMIT_BRANCH =~ /^release\/v/ ||
|
||||
$CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/) &&
|
||||
$CI_PIPELINE_SOURCE != "schedule"'
|
||||
when: on_success
|
||||
image: $CI_DOCKER_REGISTRY/esp32-ci-env
|
||||
variables:
|
||||
GIT_STRATEGY: clone
|
||||
before_script:
|
||||
- echo "skip default before_script"
|
||||
script:
|
||||
- source ${CI_PROJECT_DIR}/tools/ci/utils.sh
|
||||
- add_github_ssh_keys
|
||||
- git fetch --unshallow
|
||||
- git remote remove github &>/dev/null || true
|
||||
- git remote add github ${TARGET_GITHUB_REPO}
|
||||
- push_to_github
|
||||
@@ -0,0 +1,102 @@
|
||||
.pre_check_template:
|
||||
stage: pre_check
|
||||
image: "${CI_DOCKER_REGISTRY}/esp-env-v5.3:1"
|
||||
interruptible: true
|
||||
tags:
|
||||
- host_test
|
||||
dependencies: []
|
||||
|
||||
.check_branch_script: &check_branch_script |
|
||||
if [[ "$BOT_LABEL_SKIP_BRANCH_CHECK" = "true" || "$CI_MERGE_REQUEST_LABELS" =~ skip_branch_check ]]; then
|
||||
echo "Skip branch name check."
|
||||
else
|
||||
${CHECK_TOOLS_PATH}/check_commit_format branch-name
|
||||
fi
|
||||
|
||||
.check_commit_script: &check_commit_script |
|
||||
if [[ "$BOT_LABEL_SKIP_COMMIT_CHECK" = "true" || "$CI_MERGE_REQUEST_LABELS" =~ skip_commit_check ]]; then
|
||||
echo "Skip commit message check."
|
||||
else
|
||||
${CHECK_TOOLS_PATH}/check_commit_format commit-message
|
||||
fi
|
||||
|
||||
.check_code_script: &check_code_script |
|
||||
if [[ "$BOT_LABEL_SKIP_CODE_CHECK" = "true" || "$CI_MERGE_REQUEST_LABELS" =~ skip_code_check ]]; then
|
||||
echo "Skip code style check."
|
||||
else
|
||||
${CHECK_TOOLS_PATH}/check_commit_format --verbose --format code-style;
|
||||
if [ -d "${CHECK_REPO_PATH}/formatted" ] && [ "$(ls -A ${CHECK_REPO_PATH}/formatted)" ]; then
|
||||
git diff -- . ':(exclude).gitmodules' > ${CHECK_REPO_PATH}/patch/code_format.patch
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
check_commit_format:
|
||||
image: "$CI_DOCKER_IMAGE_REGISTRY/pre_commit:1"
|
||||
interruptible: true
|
||||
stage: pre_check
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_LABELS !~ /^(?:[^,\n\r]+,)*skip_check(?:,[^,\n\r]+)*$/i'
|
||||
script:
|
||||
- git clone --depth 1 $CHECK_FORMAT_TOOL_REPO
|
||||
- cd check-format-tool/bin
|
||||
- export CHECK_REPO_PATH=${CI_PROJECT_DIR}
|
||||
- ./install.sh
|
||||
- . ./export.sh
|
||||
- cd ${CHECK_REPO_PATH};
|
||||
- *check_branch_script
|
||||
- *check_commit_script
|
||||
- *check_code_script
|
||||
- check_project_root_dir_change
|
||||
allow_failure: true
|
||||
artifacts:
|
||||
paths:
|
||||
- ${CI_PROJECT_DIR}/patch
|
||||
- ${CI_PROJECT_DIR}/formatted
|
||||
when: always
|
||||
expire_in: 4 days
|
||||
|
||||
check_pre_commit:
|
||||
extends:
|
||||
- .rules:build:protected-merge-requests
|
||||
- .pre_check_template
|
||||
before_script:
|
||||
- pip install pre-commit
|
||||
script:
|
||||
- |
|
||||
# merged results pipelines, by default
|
||||
if [[ -n $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA ]]; then
|
||||
git fetch origin $CI_MERGE_REQUEST_DIFF_BASE_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
|
||||
git fetch origin $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
|
||||
export GIT_DIFF_OUTPUT=$(git diff --name-only $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA)
|
||||
# merge request pipelines, when the mr got conflicts
|
||||
elif [[ -n $CI_MERGE_REQUEST_DIFF_BASE_SHA ]]; then
|
||||
git fetch origin $CI_MERGE_REQUEST_DIFF_BASE_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
|
||||
git fetch origin $CI_COMMIT_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
|
||||
export GIT_DIFF_OUTPUT=$(git diff --name-only $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_COMMIT_SHA)
|
||||
# other pipelines, like the protected branches pipelines
|
||||
elif [[ "$CI_COMMIT_BEFORE_SHA" != "0000000000000000000000000000000000000000" ]]; then
|
||||
git fetch origin $CI_COMMIT_BEFORE_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
|
||||
git fetch origin $CI_COMMIT_SHA --depth=1 ${GIT_FETCH_EXTRA_FLAGS}
|
||||
export GIT_DIFF_OUTPUT=$(git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA)
|
||||
else
|
||||
# pipeline source could be web, scheduler, etc.
|
||||
git fetch origin $CI_COMMIT_SHA --depth=2 ${GIT_FETCH_EXTRA_FLAGS}
|
||||
export GIT_DIFF_OUTPUT=$(git diff --name-only $CI_COMMIT_SHA~1 $CI_COMMIT_SHA)
|
||||
fi
|
||||
- MODIFIED_FILES=$(echo $GIT_DIFF_OUTPUT | xargs)
|
||||
- echo "MODIFIED_FILES=$MODIFIED_FILES" >> pipeline.env
|
||||
- pre-commit install --allow-missing-config -t pre-commit -t commit-msg
|
||||
- pre-commit run --files $MODIFIED_FILES
|
||||
|
||||
after_script:
|
||||
- git diff > fixed.patch
|
||||
- cat fixed.patch
|
||||
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: pipeline.env
|
||||
paths:
|
||||
- pipeline.env
|
||||
expire_in: 1 week
|
||||
when: always
|
||||
@@ -0,0 +1,118 @@
|
||||
.patterns-build_components: &patterns-build_components
|
||||
- ".gitlab/**/*"
|
||||
- "tools/**/*"
|
||||
- "elements/**/*"
|
||||
- "gmf_core/**/*"
|
||||
- "packages/**/*"
|
||||
|
||||
##############
|
||||
# if anchors #
|
||||
##############
|
||||
.if-web: &if-web
|
||||
if: '$CI_PIPELINE_SOURCE == "web"'
|
||||
|
||||
.if-ref-main: &if-ref-main
|
||||
if: '$CI_COMMIT_REF_NAME == "main"'
|
||||
|
||||
.if-trigger: &if-trigger
|
||||
if: '$CI_PIPELINE_SOURCE == "trigger"'
|
||||
|
||||
.if-pipeline: &if-pipeline
|
||||
if: '$CI_PIPELINE_SOURCE == "pipeline"'
|
||||
|
||||
.if-schedule: &if-schedule
|
||||
if: '$CI_PIPELINE_SOURCE == "schedule"'
|
||||
|
||||
.if-merge_request_event: &if-merge_request_event
|
||||
if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
|
||||
.if-open-merge-request: &if-open-merge-request
|
||||
if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && ($CI_PIPELINE_SOURCE == "push")'
|
||||
|
||||
.if-dev-push: &if-dev-push
|
||||
if: '$CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_BRANCH !~ /^release\/v/ && $CI_COMMIT_TAG !~ /^v\d+\.\d+(\.\d+)?($|-)/ && ($CI_PIPELINE_SOURCE == "push")'
|
||||
|
||||
.if-protected: &if-protected
|
||||
if: '($CI_COMMIT_REF_NAME == "main" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/)'
|
||||
|
||||
.if-label-skip_unit_test: &if-label-skip_unit_test
|
||||
if: '$BOT_LABEL_SKIP_UNIT_TEST || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*skip_unit_test(?:,[^,\n\r]+)*$/i'
|
||||
|
||||
.if-label-skip_example_test: &if-label-skip_example_test
|
||||
if: '$BOT_LABEL_SKIP_EXAMPLE_TEST || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*skip_example_test(?:,[^,\n\r]+)*$/i'
|
||||
|
||||
.if-label-skip_example: &if-label-skip_example
|
||||
if: '$BOT_LABEL_SKIP_EXAMPLE_TEST || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*skip_example(?:,[^,\n\r]+)*$/i'
|
||||
|
||||
.idf-version-tag-v5-3: &idf-version-tag-v5-3
|
||||
if: '$IDF_VERSION_TAG == "v5.3"'
|
||||
variables:
|
||||
IMAGE: "$CI_DOCKER_IMAGE_REGISTRY/env_v5.3:1"
|
||||
|
||||
.idf-version-tag-v5-4: &idf-version-tag-v5-4
|
||||
if: '$IDF_VERSION_TAG == "v5.4.3"'
|
||||
variables:
|
||||
IMAGE: "$CI_IDF_DOCKER_REGISTRY/esp-env-v5.4:2"
|
||||
|
||||
.rules:ref:main-schedule:
|
||||
rules:
|
||||
- <<: *if-ref-main
|
||||
- <<: *if-schedule
|
||||
|
||||
.rules:ref:check-label:
|
||||
rules:
|
||||
- <<: *if-merge_request_event
|
||||
|
||||
.rules:build:regular-board-idf-ver-tag:
|
||||
rules:
|
||||
- <<: *if-dev-push
|
||||
when: never
|
||||
- <<: *if-schedule
|
||||
when: never
|
||||
|
||||
.rules:build:non-regular-board-idf-ver-tag:
|
||||
rules:
|
||||
- <<: *if-dev-push
|
||||
when: never
|
||||
- <<: *if-merge_request_event
|
||||
when: never
|
||||
|
||||
.rules:build:protected-merge-requests-pipeline:
|
||||
rules:
|
||||
- <<: *if-dev-push
|
||||
when: never
|
||||
- <<: *idf-version-tag-v5-3
|
||||
- <<: *idf-version-tag-v5-4
|
||||
- <<: *if-web
|
||||
- <<: *if-trigger
|
||||
- <<: *if-pipeline
|
||||
- <<: *if-protected
|
||||
- <<: *if-merge_request_event
|
||||
|
||||
.rules:build:protected-merge-requests:
|
||||
rules:
|
||||
- <<: *if-web
|
||||
- <<: *if-protected
|
||||
- <<: *if-merge_request_event
|
||||
|
||||
.rules:build:enable-gmf-example-test:
|
||||
rules:
|
||||
- <<: *if-label-skip_example_test
|
||||
when: never
|
||||
- <<: *if-label-skip_example
|
||||
when: never
|
||||
- <<: *if-web
|
||||
- <<: *if-protected
|
||||
- <<: *if-merge_request_event
|
||||
|
||||
.rules:build:enable-gmf-unit-test:
|
||||
rules:
|
||||
- <<: *if-dev-push
|
||||
when: never
|
||||
- <<: *if-label-skip_unit_test
|
||||
when: never
|
||||
- <<: *if-web
|
||||
- <<: *if-protected
|
||||
- <<: *if-trigger
|
||||
- <<: *if-schedule
|
||||
- changes: *patterns-build_components
|
||||
@@ -0,0 +1,70 @@
|
||||
.target_example_test_template:
|
||||
extends:
|
||||
- .target_test_template
|
||||
parallel:
|
||||
matrix:
|
||||
- IDF_VERSION_TAG: ['v5.4.3']
|
||||
variables:
|
||||
GIT_DEPTH: 1
|
||||
SUBMODULES_TO_FETCH: "none"
|
||||
IDF_TAG_FLAG: "true"
|
||||
TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
|
||||
LOG_PATH: "$CI_PROJECT_DIR/TEST_LOGS"
|
||||
ENV_FILE: "${BASE_FRAMEWORK_PATH}/ci-test-runner-configs/$CI_RUNNER_DESCRIPTION/EnvConfig.yml"
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- XUNIT_RESULT.xml
|
||||
- "**/*.log"
|
||||
- $LOG_PATH
|
||||
- "$CI_PROJECT_DIR/**/output.wav"
|
||||
reports:
|
||||
junit: XUNIT_RESULT.xml
|
||||
expire_in: 1 week
|
||||
|
||||
.pytest_template:
|
||||
extends:
|
||||
- .target_example_test_template
|
||||
script:
|
||||
- pip install pytest pytest-embedded-idf pytest-embedded-serial-esp pytest-rerunfailures pytest-timeout idf_build_apps
|
||||
- eval "$(python ${CI_PROJECT_DIR}/tools/ci/build_apps.py ${TEST_DIR} --find --target-dir-type ${TARGET_DIR_TYPE} --target ${IDF_TARGET} -vv)"
|
||||
- pytest "${APP_LIST[@]}" --target ${IDF_TARGET} -m "${tags}" --junitxml=XUNIT_RESULT.xml --parallel-count 1 --parallel-index 1
|
||||
|
||||
.pytest_audio_loopback_template:
|
||||
image: "$CI_DOCKER_IMAGE_REGISTRY/target_test_env_v5.3:2"
|
||||
extends:
|
||||
- .rules:build:enable-gmf-example-test
|
||||
- .target_example_test_template
|
||||
script:
|
||||
- export PYTHONPATH="/usr/local/lib/python3.9/dist-packages:$PYTHONPATH"
|
||||
- pip install pytest pytest-embedded-idf pytest-embedded-serial-esp pytest-rerunfailures pytest-timeout idf_build_apps
|
||||
- arecord -l
|
||||
- eval "$(python ${CI_PROJECT_DIR}/tools/ci/build_apps.py ${TEST_DIR} --find --target-dir-type ${TARGET_DIR_TYPE} --target ${IDF_TARGET} -vv)"
|
||||
- pytest "${APP_LIST[@]}" --target ${IDF_TARGET} -m "${tags}" --junitxml=XUNIT_RESULT.xml --parallel-count 1 --parallel-index 1
|
||||
variables:
|
||||
TEST_DIR: "${EXAMPLES_PATH}"
|
||||
|
||||
.pytest_examples_dir_template:
|
||||
extends:
|
||||
- .rules:build:enable-gmf-example-test
|
||||
- .pytest_template
|
||||
variables:
|
||||
TEST_DIR: "${EXAMPLES_PATH}"
|
||||
|
||||
audio_playback_test_esp32:
|
||||
extends:
|
||||
- .pytest_audio_loopback_template
|
||||
variables:
|
||||
IDF_TARGET: esp32
|
||||
needs:
|
||||
- 'build_examples_esp32_lyrat_mini_v1_1: [v5.4.3, 1/1]'
|
||||
tags: [ esp32, AUDIO_LOOPBACK_ENV ]
|
||||
|
||||
example_test_esp32s3:
|
||||
extends:
|
||||
- .pytest_examples_dir_template
|
||||
variables:
|
||||
IDF_TARGET: esp32s3
|
||||
needs:
|
||||
- 'build_examples_esp32s3_korvo_v2: [v5.4.3, 1/1]'
|
||||
tags: [ esp32s3 ]
|
||||
@@ -0,0 +1,62 @@
|
||||
.pytest_ut_template:
|
||||
extends:
|
||||
- .target_test_template
|
||||
variables:
|
||||
IDF_VERSION_TAG: v5.4.3
|
||||
IDF_TAG_FLAG: true
|
||||
TARGET_DIR_TYPE: "test_apps"
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- XUNIT_RESULT.xml
|
||||
- pytest-embedded/
|
||||
reports:
|
||||
junit: XUNIT_RESULT.xml
|
||||
expire_in: 1 week
|
||||
script:
|
||||
- cd $CI_PROJECT_DIR
|
||||
- pip install pytest pytest-embedded-idf pytest-embedded-serial-esp pytest-rerunfailures pytest-timeout idf_build_apps
|
||||
- eval "$(python ${CI_PROJECT_DIR}/tools/ci/build_apps.py ${TEST_DIR} --find --target-dir-type ${TARGET_DIR_TYPE} --target ${IDF_TARGET} -vv)"
|
||||
- pytest "${APP_LIST[@]}"
|
||||
--target ${IDF_TARGET}
|
||||
--junitxml=XUNIT_RESULT.xml
|
||||
--parallel-count ${CI_NODE_TOTAL:-1}
|
||||
--parallel-index ${CI_NODE_INDEX:-1}
|
||||
${PYTEST_EXTRA_FLAGS}
|
||||
|
||||
.pytest_components_dir_template:
|
||||
extends:
|
||||
- .rules:build:enable-gmf-unit-test
|
||||
- .pytest_ut_template
|
||||
variables:
|
||||
TEST_DIR: ${CI_PROJECT_DIR}/gmf_core
|
||||
BUILD_JOB_PREFIX: build_pytest_components_
|
||||
IDF_TARGET: esp32s3
|
||||
retry: 2
|
||||
|
||||
ut_gmf_core_esp32s3:
|
||||
extends:
|
||||
- .pytest_components_dir_template
|
||||
needs:
|
||||
- 'build_ut_gmf_core_esp32s3: [v5.4.3, 1/1]'
|
||||
variables:
|
||||
TEST_DIR: ${CI_PROJECT_DIR}/gmf_core
|
||||
tags: [ ESP32S3, ESP_GMF_COMPONENT ]
|
||||
|
||||
ut_gmf_elements_esp32s3:
|
||||
extends:
|
||||
- .pytest_components_dir_template
|
||||
needs:
|
||||
- 'build_ut_gmf_elements_esp32s3: [v5.4.3, 1/1]'
|
||||
variables:
|
||||
TEST_DIR: ${CI_PROJECT_DIR}/elements
|
||||
tags: [ ESP32S3, ESP_GMF_COMPONENT ]
|
||||
|
||||
ut_gmf_packages_esp32s3:
|
||||
extends:
|
||||
- .pytest_components_dir_template
|
||||
needs:
|
||||
- 'build_ut_gmf_packages_esp32s3: [v5.4.3, 1/1]'
|
||||
variables:
|
||||
TEST_DIR: ${CI_PROJECT_DIR}/packages
|
||||
tags: [ ESP32S3, ESP_GMF_COMPONENT ]
|
||||
Reference in New Issue
Block a user