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