]> granicus.if.org Git - esp-idf/blob - .gitlab-ci.yml
Merge branch 'bugfix/esp_ping_ms_pr1638' into 'master'
[esp-idf] / .gitlab-ci.yml
1 stages:
2   - build
3   - assign_test
4   - unit_test
5   - test
6   - test_report
7   - deploy
8
9 variables:
10 # System environment
11
12   # Common parameters for the 'make' during CI tests
13   MAKEFLAGS: "-j5 --no-keep-going"
14
15 # GitLab-CI environment
16
17   # more attempts for more robust
18   GET_SOURCES_ATTEMPTS: "10"
19   ARTIFACT_DOWNLOAD_ATTEMPTS: "10"
20
21   # We use get_sources.sh script to fetch the submodules and/or re-fetch the repo
22   # if it was corrupted (if submodule update fails this can happen)
23   GIT_STRATEGY: fetch
24   GIT_SUBMODULE_STRATEGY: none
25
26 # IDF environment
27
28   IDF_PATH: "$CI_PROJECT_DIR"
29   APPLY_BOT_FILTER_SCRIPT: "$CI_PROJECT_DIR/tools/ci/apply_bot_filter.py"
30   CHECKOUT_REF_SCRIPT: "$CI_PROJECT_DIR/tools/ci/checkout_project_ref.py"
31
32 # before each job, we need to check if this job is filtered by bot stage/job filter
33 .apply_bot_filter: &apply_bot_filter
34   python $APPLY_BOT_FILTER_SCRIPT || exit 0
35
36 before_script:
37   # apply bot filter in before script
38   - *apply_bot_filter
39   # add gitlab ssh key
40   - mkdir -p ~/.ssh
41   - chmod 700 ~/.ssh
42   - echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
43   - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
44   - chmod 600 ~/.ssh/id_rsa
45   - echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
46
47   # Set IS_PRIVATE or IS_PUBLIC depending on if our branch is public or not
48   #
49   # (the same regular expressions are used to set these are used in 'only:' sections below
50   - source tools/ci/configure_ci_environment.sh
51
52   # fetch the submodules (& if necessary re-fetch repo) from gitlab
53   - time ./tools/ci/get-full-sources.sh
54
55 .do_nothing_before:
56   before_script: &do_nothing_before
57     # apply bot filter in before script
58     - *apply_bot_filter
59     - echo "Not setting up GitLab key, not fetching submodules"
60     - source tools/ci/configure_ci_environment.sh
61
62 .add_gitlab_key_before:
63   before_script: &add_gitlab_key_before
64     # apply bot filter in before script
65     - *apply_bot_filter
66     - echo "Not fetching submodules"
67     - source tools/ci/configure_ci_environment.sh
68     # add gitlab ssh key
69     - mkdir -p ~/.ssh
70     - chmod 700 ~/.ssh
71     - echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
72     - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
73     - chmod 600 ~/.ssh/id_rsa
74     - echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
75
76 build_template_app:
77   stage: build
78   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
79   tags:
80     - build
81   variables:
82     BATCH_BUILD: "1"
83     IDF_CI_BUILD: "1"
84   script:
85     - git clone https://github.com/espressif/esp-idf-template.git
86     - cd esp-idf-template
87     # Try to use the same branch name for esp-idf-template that we're
88     # using on esp-idf. If it doesn't exist then just stick to the default
89     # branch
90     - python $CHECKOUT_REF_SCRIPT esp-idf-template
91     # Test debug build (default)
92     - make all V=1
93     # Now test release build
94     - make clean
95     - sed -i.bak -e's/CONFIG_OPTIMIZATION_LEVEL_DEBUG\=y/CONFIG_OPTIMIZATION_LEVEL_RELEASE=y/' sdkconfig
96     - make all V=1
97     # Check if there are any stray printf/ets_printf references in WiFi libs
98     - cd ../components/esp32/lib
99     - test $(xtensa-esp32-elf-nm *.a | grep -w printf | wc -l) -eq 0
100     - test $(xtensa-esp32-elf-nm *.a | grep -w ets_printf | wc -l) -eq 0
101
102
103 .build_template: &build_template
104   stage: build
105   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
106   tags:
107     - build
108   variables:
109     BATCH_BUILD: "1"
110     V: "0"
111
112 build_ssc:
113   <<: *build_template
114   artifacts:
115     paths:
116       - SSC/ssc_bin
117     expire_in: 6 mos
118   script:
119     - git clone $SSC_REPOSITORY
120     - cd SSC
121     - python $CHECKOUT_REF_SCRIPT SSC
122     - MAKEFLAGS= ./gen_misc_ng.sh
123
124 build_esp_idf_tests:
125   <<: *build_template
126   artifacts:
127     paths:
128       - tools/unit-test-app/output
129       - components/idf_test/unit_test/TestCaseAll.yml
130       - components/idf_test/unit_test/CIConfigs/*.yml
131     expire_in: 6 mos
132   script:
133     - cd tools/unit-test-app
134     - make help # make sure kconfig tools are built in single process
135     - make ut-clean-all-configs
136     - export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
137     - export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
138     - make ut-build-all-configs TESTS_ALL=1
139     - python tools/UnitTestParser.py
140
141 .build_examples_template: &build_examples_template
142   <<: *build_template
143   artifacts:
144     when: always
145     paths:
146       - build_examples/*/*/*/build/*.bin
147       - build_examples/*/*/*/build/*.elf
148       - build_examples/*/*/*/build/*.map
149       - build_examples/*/*/*/build/download.config
150       - build_examples/*/*/*/build/bootloader/*.bin
151       - $LOG_PATH
152     expire_in: 1 week
153   variables:
154     IDF_CI_BUILD: "1"
155     LOG_PATH: "$CI_PROJECT_DIR/log_examples"
156   script:
157     # it's not possible to build 100% out-of-tree and have the "artifacts"
158     # mechanism work, but this is the next best thing
159     - rm -rf build_examples
160     - mkdir build_examples
161     - cd build_examples
162     # build some of examples
163     - mkdir -p ${LOG_PATH}
164     - ${IDF_PATH}/tools/ci/build_examples.sh "${CI_JOB_NAME}"
165
166 build_examples_00:
167   <<: *build_examples_template
168
169 build_examples_01:
170   <<: *build_examples_template
171
172 build_examples_02:
173   <<: *build_examples_template
174
175 build_examples_03:
176   <<: *build_examples_template
177
178 build_examples_04:
179   <<: *build_examples_template
180
181 build_examples_05:
182   <<: *build_examples_template
183
184 build_examples_06:
185   <<: *build_examples_template
186
187 build_examples_07:
188   <<: *build_examples_template
189
190
191 build_docs:
192   stage: build
193   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
194   tags:
195     - build_docs
196   artifacts:
197     when: always
198     paths:
199       - docs/doxygen-warning-log.txt
200       - docs/sphinx-warning-log.txt
201       - docs/sphinx-warning-log-sanitized.txt
202       - docs/_build/html
203     expire_in: 1 mos
204   script:
205     - cd docs
206     - doxygen
207     # If there are Doxygen warnings, print them and bail out
208     - test $(cat doxygen-warning-log.txt | wc -l) -eq 0 || ( echo "Doxygen pass had some warnings:" && cat doxygen-warning-log.txt && false )
209     - make gh-linkcheck
210     - make html
211     - ./check_doc_warnings.sh
212
213 test_nvs_on_host:
214   stage: test
215   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
216   tags:
217     - nvs_host_test
218   dependencies: []
219   script:
220     - cd components/nvs_flash/test_nvs_host
221     - make test
222
223 test_partition_table_on_host:
224   stage: test
225   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
226   tags:
227     - build
228   dependencies: []
229   script:
230     - cd components/partition_table/test_gen_esp32part_host
231     - ./gen_esp32part_tests.py
232
233 test_wl_on_host:
234   stage: test
235   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
236   tags:
237     - wl_host_test
238   artifacts:
239     paths:
240       - components/wear_levelling/test_wl_host/coverage_report.zip
241   dependencies: []
242   script:
243     - cd components/wear_levelling/test_wl_host
244     - make test
245
246 test_multi_heap_on_host:
247   stage: test
248   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
249   tags:
250     - wl_host_test
251   script:
252     - cd components/heap/test_multi_heap_host
253     - make test
254
255 test_build_system:
256   stage: test
257   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
258   tags:
259     - build_test
260   dependencies: []
261   script:
262     - ${IDF_PATH}/tools/ci/test_configure_ci_environment.sh
263     - rm -rf test_build_system
264     - mkdir test_build_system
265     - cd test_build_system
266     - ${IDF_PATH}/tools/ci/test_build_system.sh
267
268 test_report:
269   stage: test_report
270   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
271   tags:
272     - report
273   only:
274     - master
275     - triggers
276     - /^release\/v/
277     - /^v\d+\.\d+(\.\d+)?($|-)/
278   variables:
279     LOG_PATH: "$CI_PROJECT_DIR/$CI_COMMIT_SHA"
280     TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test"
281     REPORT_PATH: "$CI_PROJECT_DIR/CI_Test_Report"
282     MODULE_UPDATE_FILE: "$CI_PROJECT_DIR/tools/unit-test-app/tools/ModuleDefinition.yml"
283   #dependencies:
284   #We need all UT* and IT* artifacts except for only a few other
285   artifacts:
286     when: always
287     paths:
288       - $REPORT_PATH
289       - $LOG_PATH
290     expire_in: 12 mos
291   script:
292     # calc log path
293     - VER_NUM=`git rev-list HEAD | wc -l | awk '{print $1}'`
294     - SHA_ID=`echo $CI_COMMIT_SHA | cut -c 1-7`
295     - REVISION="${VER_NUM}_${SHA_ID}"
296     # replace / to _ in branch name
297     - ESCAPED_BRANCH_NAME=`echo $CI_COMMIT_REF_NAME | sed 's/\//___/g'`
298     # result path and artifacts path
299     - RESULT_PATH="$CI_PROJECT_NAME/$ESCAPED_BRANCH_NAME/$REVISION"
300     - ARTIFACTS_PATH="$GITLAB_HTTP_SERVER/idf/esp-idf/builds/$CI_JOB_ID/artifacts/browse/$CI_COMMIT_SHA"
301     # clone test bench
302     - git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
303     - cd auto_test_script
304     - python $CHECKOUT_REF_SCRIPT auto_test_script
305     # generate report
306     - TEST_RESULT=Pass
307     - python CITestReport.py -l $LOG_PATH -t $TEST_CASE_FILE_PATH -p $REPORT_PATH -r $RESULT_PATH -a $ARTIFACTS_PATH -m $MODULE_UPDATE_FILE || TEST_RESULT=Fail
308     # commit to CI-test-result project
309     - git clone $GITLAB_SSH_SERVER/qa/CI-test-result.git
310     - rm -rf "CI-test-result/RawData/$RESULT_PATH"
311     - cp -R $CI_PROJECT_NAME CI-test-result/RawData
312     - cd CI-test-result
313     # config git user
314     - git config --global user.email "ci-test-result@espressif.com"
315     - git config --global user.name "ci-test-result"
316     # commit test result
317     - git add .
318     - git commit . -m "update test result for $CI_PROJECT_NAME/$CI_COMMIT_REF_NAME/$CI_COMMIT_SHA, pipeline ID $CI_PIPELINE_ID" || exit 0
319     - git push origin master
320     - test "${TEST_RESULT}" = "Pass" || exit 1
321
322 test_esp_err_to_name_on_host:
323   stage: test
324   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
325   tags:
326     - build
327   dependencies: []
328   script:
329     - cd tools/
330     - ./gen_esp_err_to_name.py
331     - git diff --exit-code -- ../components/esp32/esp_err_to_name.c || (echo 'Differences found. Please run gen_esp_err_to_name.py and commit the changes.'; exit 1)
332
333 push_master_to_github:
334   stage: deploy
335   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
336   tags:
337     - deploy
338   only:
339     - master
340     - /^release\/v/
341     - /^v\d+\.\d+(\.\d+)?($|-)/
342   when: on_success
343   dependencies: []
344   variables:
345     GITHUB_PUSH_REFS: refs/remotes/origin/release refs/remotes/origin/master
346   before_script: *do_nothing_before
347   script:
348     - mkdir -p ~/.ssh
349     - chmod 700 ~/.ssh
350     - echo -n $GH_PUSH_KEY > ~/.ssh/id_rsa_base64
351     - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
352     - chmod 600 ~/.ssh/id_rsa
353     - echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
354     - git remote remove github &>/dev/null || true
355     - git remote add github git@github.com:espressif/esp-idf.git
356     # What the next line of script does: goes through the list of refs for all branches we push to github,
357     # generates a snippet of shell which is evaluated. The snippet checks CI_COMMIT_SHA against the SHA
358     # (aka objectname) at tip of each branch, and if any SHAs match then it checks out the local branch
359     # and then pushes that ref to a corresponding github branch
360     - eval $(git for-each-ref --shell bash --format 'if [ $CI_COMMIT_SHA == %(objectname) ]; then git checkout -B %(refname:strip=3); git push --follow-tags github %(refname:strip=3); fi;' $GITHUB_PUSH_REFS)
361
362
363 deploy_docs:
364   stage: deploy
365   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
366   tags:
367     - deploy
368   only:
369    - master
370    - /^release\/v/
371    - /^v\d+\.\d+(\.\d+)?($|-)/
372    - triggers
373   dependencies:
374     - build_docs
375   before_script: *do_nothing_before
376   script:
377     - mkdir -p ~/.ssh
378     - chmod 700 ~/.ssh
379     - echo -n $DOCS_DEPLOY_KEY > ~/.ssh/id_rsa_base64
380     - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
381     - chmod 600 ~/.ssh/id_rsa
382     - echo -e "Host $DOCS_SERVER\n\tStrictHostKeyChecking no\n\tUser $DOCS_SERVER_USER\n" >> ~/.ssh/config
383     - export GIT_VER=$(git describe --always)
384     - cd docs/_build/
385     - mv html $GIT_VER
386     - tar czvf $GIT_VER.tar.gz $GIT_VER
387     - scp $GIT_VER.tar.gz $DOCS_SERVER:$DOCS_PATH
388     - ssh $DOCS_SERVER -x "cd $DOCS_PATH && tar xzvf $GIT_VER.tar.gz && rm -f latest && ln -s $GIT_VER latest"
389
390 check_doc_links:
391   stage: test
392   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
393   tags:
394     - check_doc_links
395   only:
396     # can only be triggered
397     - triggers
398   artifacts:
399     paths:
400       - docs/_build/linkcheck
401     expire_in: 1 mos
402   script:
403     # must be triggered with CHECK_LINKS=Yes, otherwise exit without test
404     - test "$CHECK_LINKS" = "Yes" || exit 0
405     # can only run on master branch (otherwise the commit is not on Github yet)
406     - test "${CI_COMMIT_REF_NAME}" = "master" || exit 0
407     - cd docs
408     - make linkcheck
409
410 check_commit_msg:
411   stage: deploy
412   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
413   tags:
414     - build
415   except:
416     - master
417     - /^release\/v/
418     - /^v\d+\.\d+(\.\d+)?($|-)/
419   dependencies: []
420   before_script: *do_nothing_before
421   script:
422     - git status
423     - git log -n10 --oneline
424     # commit start with "WIP: " need to be squashed before merge
425     - 'git log --pretty=%s master.. -- | grep "^WIP: " && exit 1 || exit 0'
426
427 check_submodule_sync:
428   stage: deploy
429   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
430   tags:
431     - build
432   except:
433     - master
434     - /^release\/v/
435     - /^v\d+\.\d+(\.\d+)?($|-)/
436   dependencies: []
437   variables:
438     GIT_STRATEGY: clone
439   before_script: *do_nothing_before
440   script:
441     # check if all submodules are correctly synced to public repostory
442     - git submodule update --init --recursive
443
444 assign_test:
445   <<: *build_template
446   stage: assign_test
447   # gitlab ci do not support match job with RegEx or wildcard now in dependencies.
448   # we have a lot build example jobs. now we don't use dependencies, just download all artificats of build stage.
449   variables:
450     UT_BIN_PATH: "tools/unit-test-app/output"
451     OUTPUT_BIN_PATH: "test_bins/ESP32_IDF"
452     TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
453     EXAMPLE_CONFIG_OUTPUT_PATH: "$CI_PROJECT_DIR/examples/test_configs"
454   artifacts:
455     paths:
456       - test_bins
457       - components/idf_test/*/CIConfigs
458       - components/idf_test/*/TC.sqlite
459       - $EXAMPLE_CONFIG_OUTPUT_PATH
460       - tools/unit-test-app/output
461     expire_in: 1 mos
462   before_script: *add_gitlab_key_before
463   script:
464     # first move test bins together: test_bins/CHIP_SDK/TestApp/bin_files
465     - mkdir -p $OUTPUT_BIN_PATH
466     - cp -r SSC/ssc_bin/* $OUTPUT_BIN_PATH
467     # assign example tests
468     - python $TEST_FW_PATH/CIAssignExampleTest.py $IDF_PATH/examples $IDF_PATH/.gitlab-ci.yml $EXAMPLE_CONFIG_OUTPUT_PATH
469     # assign unit test cases
470     - python $TEST_FW_PATH/CIAssignUnitTest.py $IDF_PATH/components/idf_test/unit_test/TestCaseAll.yml $IDF_PATH/.gitlab-ci.yml $IDF_PATH/components/idf_test/unit_test/CIConfigs
471     # clone test script to assign tests
472     - git clone $TEST_SCRIPT_REPOSITORY
473     - cd auto_test_script
474     - python $CHECKOUT_REF_SCRIPT auto_test_script
475     # assgin integration test cases
476     - python CIAssignTestCases.py -t $IDF_PATH/components/idf_test/integration_test -c $IDF_PATH/.gitlab-ci.yml -b $IDF_PATH/test_bins
477
478 .example_test_template: &example_test_template
479   stage: test
480   when: on_success
481   only:
482     - master
483     - /^release\/v/
484     - /^v\d+\.\d+(\.\d+)?($|-)/
485     - triggers
486   # gitlab ci do not support match job with RegEx or wildcard now in dependencies.
487   # we have a lot build example jobs and the binaries them exceed the limitation of artifacts.
488   # we can't artifact them in one job. For example test jobs, download all artifacts from previous stages.
489   artifacts:
490     when: always
491     paths:
492       - $LOG_PATH
493     expire_in: 6 mos
494   variables:
495     TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
496     TEST_CASE_PATH: "$CI_PROJECT_DIR/examples"
497     CONFIG_FILE: "$CI_PROJECT_DIR/examples/test_configs/$CI_JOB_NAME.yml"
498     LOG_PATH: "$CI_PROJECT_DIR/TEST_LOGS"
499   script:
500     # first test if config file exists, if not exist, exit 0
501     - test -e $CONFIG_FILE || exit 0
502     - cd $TEST_FW_PATH
503     # run test
504     - python Runner.py $TEST_CASE_PATH -c $CONFIG_FILE
505
506 .unit_test_template: &unit_test_template
507   <<: *example_test_template
508   stage: unit_test
509   dependencies:
510     - assign_test
511   variables:
512     TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
513     TEST_CASE_PATH: "$CI_PROJECT_DIR/tools/unit-test-app"
514     CONFIG_FILE: "$CI_PROJECT_DIR/components/idf_test/unit_test/CIConfigs/$CI_JOB_NAME.yml"
515     LOG_PATH: "$CI_PROJECT_DIR/TEST_LOGS"
516
517 .test_template: &test_template
518   stage: test
519   when: on_success
520   only:
521     - master
522     - /^release\/v/
523     - /^v\d+\.\d+(\.\d+)?($|-)/
524     - triggers
525   allow_failure: true
526   dependencies:
527     - assign_test
528   artifacts:
529     when: always
530     paths:
531       - $LOG_PATH
532     expire_in: 6 mos
533   variables:
534     LOCAL_ENV_CONFIG_PATH: "$CI_PROJECT_DIR/ci-test-runner-configs/$CI_RUNNER_DESCRIPTION/ESP32_IDF"
535     LOG_PATH: "$CI_PROJECT_DIR/$CI_COMMIT_SHA"
536     TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test/integration_test"
537     MODULE_UPDATE_FILE: "$CI_PROJECT_DIR/components/idf_test/ModuleDefinition.yml"
538     CONFIG_FILE: "$CI_PROJECT_DIR/components/idf_test/integration_test/CIConfigs/$CI_JOB_NAME.yml"
539   before_script: *add_gitlab_key_before
540   script:
541     # first test if config file exists, if not exist, exit 0
542     - test -e $CONFIG_FILE || exit 0
543     # clone local test env configs
544     - git clone $TEST_ENV_CONFIG_REPOSITORY
545     - cd ci-test-runner-configs
546     - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs
547     # clone test bench
548     - git clone $TEST_SCRIPT_REPOSITORY
549     - cd auto_test_script
550     - python $CHECKOUT_REF_SCRIPT auto_test_script
551     # run test
552     - python CIRunner.py -l "$LOG_PATH/$CI_JOB_NAME" -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH -m $MODULE_UPDATE_FILE
553
554 nvs_compatible_test:
555   <<: *test_template
556   artifacts:
557     when: always
558     paths:
559       - $LOG_PATH
560       - nvs_wifi.bin
561     expire_in: 6 mos
562   tags:
563     - ESP32_IDF
564     - NVS_Compatible
565   script:
566     # clone local test env configs
567     - git clone $TEST_ENV_CONFIG_REPOSITORY
568     - cd ci-test-runner-configs
569     - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs
570     # clone test bench
571     - git clone $TEST_SCRIPT_REPOSITORY
572     - cd auto_test_script
573     - git checkout ${CI_COMMIT_REF_NAME} || echo "Using default branch..."
574     # prepare nvs bins
575     - ./Tools/prepare_nvs_bin.sh
576     # run test
577     - python CIRunner.py -l "$LOG_PATH/$CI_JOB_NAME" -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH -m $MODULE_UPDATE_FILE
578
579 example_test_001_01:
580   <<: *example_test_template
581   tags:
582     - ESP32
583     - Example_WIFI
584
585 UT_001_01:
586   <<: *unit_test_template
587   tags:
588     - ESP32_IDF
589     - UT_T1_1
590     - UT_default
591
592 UT_001_02:
593   <<: *unit_test_template
594   tags:
595     - ESP32_IDF
596     - UT_T1_1
597     - UT_default
598
599 UT_001_03:
600   <<: *unit_test_template
601   tags:
602     - ESP32_IDF
603     - UT_T1_1
604     - UT_default
605
606 UT_001_04:
607   <<: *unit_test_template
608   tags:
609     - ESP32_IDF
610     - UT_T1_1
611     - UT_default
612
613 UT_001_05:
614   <<: *unit_test_template
615   tags:
616     - ESP32_IDF
617     - UT_T1_SDMODE
618     - UT_default
619
620 UT_001_06:
621   <<: *unit_test_template
622   tags:
623     - ESP32_IDF
624     - UT_T1_SPIMODE
625     - UT_default
626
627 UT_001_07:
628   <<: *unit_test_template
629   tags:
630     - ESP32_IDF
631     - UT_T1_1
632     - UT_default
633
634 UT_001_08:
635   <<: *unit_test_template
636   tags:
637     - ESP32_IDF
638     - UT_T1_1
639     - UT_default
640
641 UT_001_09:
642   <<: *unit_test_template
643   tags:
644     - ESP32_IDF
645     - UT_T1_1
646     - UT_default
647
648 UT_002_01:
649   <<: *unit_test_template
650   tags:
651     - ESP32_IDF
652     - UT_T1_1
653     - UT_release
654
655 UT_002_02:
656   <<: *unit_test_template
657   tags:
658     - ESP32_IDF
659     - UT_T1_1
660     - UT_release
661
662 UT_002_03:
663   <<: *unit_test_template
664   tags:
665     - ESP32_IDF
666     - UT_T1_1
667     - UT_release
668
669 UT_002_04:
670   <<: *unit_test_template
671   tags:
672     - ESP32_IDF
673     - UT_T1_1
674     - UT_release
675
676 UT_002_05:
677   <<: *unit_test_template
678   tags:
679     - ESP32_IDF
680     - UT_T1_SDMODE
681     - UT_release
682
683 UT_002_06:
684   <<: *unit_test_template
685   tags:
686     - ESP32_IDF
687     - UT_T1_SPIMODE
688     - UT_release
689
690 UT_002_07:
691   <<: *unit_test_template
692   tags:
693     - ESP32_IDF
694     - UT_T1_1
695     - UT_release
696
697 UT_002_08:
698   <<: *unit_test_template
699   tags:
700     - ESP32_IDF
701     - UT_T1_1
702     - UT_release
703
704 UT_002_09:
705   <<: *unit_test_template
706   tags:
707     - ESP32_IDF
708     - UT_T1_1
709     - UT_release
710
711 UT_003_01:
712   <<: *unit_test_template
713   tags:
714     - ESP32_IDF
715     - UT_T1_1
716     - UT_single_core
717
718 UT_003_02:
719   <<: *unit_test_template
720   tags:
721     - ESP32_IDF
722     - UT_T1_1
723     - UT_single_core
724
725 UT_003_03:
726   <<: *unit_test_template
727   tags:
728     - ESP32_IDF
729     - UT_T1_1
730     - UT_single_core
731
732 UT_003_04:
733   <<: *unit_test_template
734   tags:
735     - ESP32_IDF
736     - UT_T1_1
737     - UT_single_core
738
739 UT_003_05:
740   <<: *unit_test_template
741   tags:
742     - ESP32_IDF
743     - UT_T1_SDMODE
744     - UT_single_core
745
746 UT_003_06:
747   <<: *unit_test_template
748   tags:
749     - ESP32_IDF
750     - UT_T1_SPIMODE
751     - UT_single_core
752
753 UT_003_07:
754   <<: *unit_test_template
755   tags:
756     - ESP32_IDF
757     - UT_T1_1
758     - UT_single_core
759
760 UT_003_08:
761   <<: *unit_test_template
762   tags:
763     - ESP32_IDF
764     - UT_T1_1
765     - UT_single_core
766
767 UT_003_09:
768   <<: *unit_test_template
769   tags:
770     - ESP32_IDF
771     - UT_T1_1
772     - UT_single_core
773
774 UT_004_01:
775   <<: *unit_test_template
776   tags:
777     - ESP32_IDF
778     - UT_T1_1
779     - UT_psram
780
781 UT_004_02:
782   <<: *unit_test_template
783   tags:
784     - ESP32_IDF
785     - UT_T1_1
786     - UT_psram
787
788 UT_004_03:
789   <<: *unit_test_template
790   tags:
791     - ESP32_IDF
792     - UT_T1_1
793     - UT_psram
794
795 UT_004_04:
796   <<: *unit_test_template
797   tags:
798     - ESP32_IDF
799     - UT_T1_1
800     - UT_psram
801
802 UT_004_05:
803   <<: *unit_test_template
804   tags:
805     - ESP32_IDF
806     - UT_T1_SDMODE
807     - UT_psram
808
809 UT_004_06:
810   <<: *unit_test_template
811   tags:
812     - ESP32_IDF
813     - UT_T1_SPIMODE
814     - UT_psram
815
816 UT_004_07:
817   <<: *unit_test_template
818   tags:
819     - ESP32_IDF
820     - UT_T1_1
821     - UT_psram
822
823 UT_004_08:
824   <<: *unit_test_template
825   tags:
826     - ESP32_IDF
827     - UT_T1_1
828     - UT_psram
829
830 UT_004_09:
831   <<: *unit_test_template
832   tags:
833     - ESP32_IDF
834     - UT_T1_1
835     - UT_psram
836
837 IT_001_01:
838   <<: *test_template
839   tags:
840     - ESP32_IDF
841     - SSC_T1_1
842
843 IT_001_02:
844   <<: *test_template
845   tags:
846     - ESP32_IDF
847     - SSC_T1_1
848
849 IT_001_03:
850   <<: *test_template
851   tags:
852     - ESP32_IDF
853     - SSC_T1_1
854
855 IT_001_04:
856   <<: *test_template
857   tags:
858     - ESP32_IDF
859     - SSC_T1_1
860
861 IT_001_05:
862   <<: *test_template
863   tags:
864     - ESP32_IDF
865     - SSC_T1_1
866
867 IT_001_06:
868   <<: *test_template
869   tags:
870     - ESP32_IDF
871     - SSC_T1_1
872
873 IT_001_07:
874   <<: *test_template
875   tags:
876     - ESP32_IDF
877     - SSC_T1_1
878
879 IT_001_08:
880   <<: *test_template
881   tags:
882     - ESP32_IDF
883     - SSC_T1_1
884
885 IT_001_09:
886   <<: *test_template
887   tags:
888     - ESP32_IDF
889     - SSC_T1_1
890
891 IT_002_01:
892   <<: *test_template
893   tags:
894     - ESP32_IDF
895     - SSC_T1_2
896
897 IT_003_01:
898   <<: *test_template
899   tags:
900     - ESP32_IDF
901     - SSC_T2_1
902
903 IT_003_02:
904   <<: *test_template
905   tags:
906     - ESP32_IDF
907     - SSC_T2_1
908
909 IT_003_03:
910   <<: *test_template
911   tags:
912     - ESP32_IDF
913     - SSC_T2_1
914
915 IT_003_04:
916   <<: *test_template
917   tags:
918     - ESP32_IDF
919     - SSC_T2_1
920
921 IT_003_05:
922   <<: *test_template
923   tags:
924     - ESP32_IDF
925     - SSC_T2_1
926
927 IT_003_06:
928   <<: *test_template
929   tags:
930     - ESP32_IDF
931     - SSC_T2_1
932
933 IT_003_07:
934   <<: *test_template
935   tags:
936     - ESP32_IDF
937     - SSC_T2_1
938
939 IT_004_01:
940   <<: *test_template
941   tags:
942     - ESP32_IDF
943     - SSC_T1_APC
944
945 IT_005_01:
946   <<: *test_template
947   tags:
948     - ESP32_IDF
949     - SSC_T1_WEP
950
951 IT_006_01:
952   <<: *test_template
953   tags:
954     - ESP32_IDF
955     - SSC_T3_PhyMode
956
957 IT_007_01:
958   <<: *test_template
959   tags:
960     - ESP32_IDF
961     - SSC_T2_PhyMode
962
963 IT_008_01:
964   <<: *test_template
965   tags:
966     - ESP32_IDF
967     - SSC_T2_PhyMode
968
969 IT_009_01:
970   <<: *test_template
971   tags:
972     - ESP32_IDF
973     - SSC_T1_3
974
975 IT_501_01:
976   <<: *test_template
977   tags:
978     - ESP32_IDF
979     - SSC_T1_1
980     - stress_test
981
982 IT_501_02:
983   <<: *test_template
984   tags:
985     - ESP32_IDF
986     - SSC_T1_1
987     - stress_test
988
989 IT_501_03:
990   <<: *test_template
991   tags:
992     - ESP32_IDF
993     - SSC_T1_1
994     - stress_test
995
996 IT_502_01:
997   <<: *test_template
998   tags:
999     - ESP32_IDF
1000     - SSC_T2_1
1001     - stress_test
1002
1003 IT_502_02:
1004   <<: *test_template
1005   tags:
1006     - ESP32_IDF
1007     - SSC_T2_1
1008     - stress_test
1009
1010 IT_503_01:
1011   <<: *test_template
1012   tags:
1013     - ESP32_IDF
1014     - SSC_T5_1
1015     - stress_test
1016
1017 IT_503_02:
1018   <<: *test_template
1019   tags:
1020     - ESP32_IDF
1021     - SSC_T5_1
1022     - stress_test
1023
1024 IT_503_03:
1025   <<: *test_template
1026   tags:
1027     - ESP32_IDF
1028     - SSC_T5_1
1029     - stress_test