]> granicus.if.org Git - esp-idf/blobdiff - .gitlab-ci.yml
Panic handler: Use same reset path as esp_restart(), disabling hardware
[esp-idf] / .gitlab-ci.yml
index 6f050d1fcb0bd361ecc80c04acc6f922ab76678c..8cb5c8bcac53c11bfa5714583300d0e740e43fa2 100644 (file)
@@ -1,5 +1,6 @@
 stages:
   - build
+  - unit_test
   - test
   - test_report
   - deploy
@@ -12,14 +13,13 @@ before_script:
   - 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
-  # if testing master branch, use github wifi libs.
-  # if testing other branches, use gitlab wifi libs (as maybe changes aren't merged to master yet)
-  - test "${CI_BUILD_REF_NAME}" = "master" || sed -i "s%https://github.com/espressif/esp32-wifi-lib%ssh://git@gitlab.espressif.cn:27227/idf/esp32-wifi-lib%" .gitmodules
+
+  # if testing master branch, use github wifi and bt libs.
+  # if testing other branches, use gitlab wifi and bt libs (as maybe changes aren't merged to master yet)
+  - test "${CI_BUILD_REF_NAME}" = "master" || sed -i "s%https://github.com/espressif/esp32-wifi-lib%${GITLAB_SSH_SERVER}/idf/esp32-wifi-lib%" .gitmodules
+  - test "${CI_BUILD_REF_NAME}" = "master" || sed -i "s%https://github.com/espressif/esp32-bt-lib%${GITLAB_SSH_SERVER}/idf/esp32-bt-lib%" .gitmodules
   # fetch all submodules
   - git submodule update --init --recursive
-  # try use submodule with same branch
-  - SUBMODULES=`cat .gitmodules | grep path | awk '{print $3}'`
-  - for MODULE in $SUBMODULES;do (echo $MODULE;cd $MODULE;git checkout ${CI_BUILD_REF_NAME} || echo "using default branch";cd $CI_PROJECT_DIR); done
 
 build_template_app:
   stage: build
@@ -47,6 +47,10 @@ build_template_app:
     - sed -i.bak -e's/CONFIG_OPTIMIZATION_LEVEL_DEBUG\=y/CONFIG_OPTIMIZATION_LEVEL_RELEASE=y/' sdkconfig
     - make defconfig
     - make all V=1
+    # Check if there are any stray printf/ets_printf references in WiFi libs
+    - cd ../components/esp32/lib
+    - test $(xtensa-esp32-elf-nm *.a | grep -w printf | wc -l) -eq 0
+    - test $(xtensa-esp32-elf-nm *.a | grep -w ets_printf | wc -l) -eq 0
 
 
 .build_gitlab: &build_template
@@ -64,10 +68,7 @@ build_ssc:
   <<: *build_template
   artifacts:
     paths:
-      - ./SSC/build/*.bin
-      - ./SSC/build/*.elf
-      - ./SSC/build/*.map
-      - ./SSC/build/bootloader/*.bin
+      - ./SSC/ssc_bin
     expire_in: 6 mos
 
   script:
@@ -78,6 +79,22 @@ build_ssc:
     - chmod +x gen_misc_ng.sh
     - ./gen_misc_ng.sh
 
+build_esp_idf_tests:
+  <<: *build_template
+  artifacts:
+    paths:
+      - ./tools/unit-test-app/build/*.bin
+      - ./tools/unit-test-app/build/*.elf
+      - ./tools/unit-test-app/build/*.map
+      - ./tools/unit-test-app/build/bootloader/*.bin
+    expire_in: 6 mos
+
+  script:
+    - cd tools/unit-test-app
+    - git checkout ${CI_BUILD_REF_NAME} || echo "Using default branch..."
+    - make defconfig
+    - make TESTS_ALL=1
+
 build_examples:
   <<: *build_template
   artifacts:
@@ -102,6 +119,9 @@ build_docs:
     - build_docs
   script:
     - cd docs
+    - doxygen
+    # If not building master branch, and there are Doxygen warnings, print them and bail out
+    - test "${CI_BUILD_REF_NAME}" = "master" || test $(cat doxygen-warning-log.txt | wc -l) -eq 0 || ( echo "Doxygen pass had some warnings:" && cat doxygen-warning-log.txt && false )
     - make html
   artifacts:
     paths:
@@ -115,7 +135,7 @@ test_nvs_on_host:
   tags:
     - nvs_host_test
   script:
-    - cd components/nvs_flash/test
+    - cd components/nvs_flash/test_nvs_host
     - make test
 
 test_build_system:
@@ -130,11 +150,12 @@ test_build_system:
 
 test_report:
   stage: test_report
+  image: espressif/esp32-ci-env
   only:
     - master
     - triggers
   tags:
-    - test_report
+    - report
   variables:
     LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
     TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test"
@@ -143,14 +164,37 @@ test_report:
     when: always
     paths:
       - $REPORT_PATH
+      - $LOG_PATH
     expire_in: 12 mos
   script:
+    # calc log path
+    - VER_NUM=`git rev-list HEAD | wc -l | awk '{print $1}'`
+    - SHA_ID=`echo $CI_BUILD_REF | cut -c 1-7`
+    - REVISION="${VER_NUM}_${SHA_ID}"
+    # replace / to _ in branch name
+    - ESCAPED_BRANCH_NAME=`echo $CI_BUILD_REF_NAME | sed 's/\//___/g'`
+    # result path and artifacts path
+    - RESULT_PATH="$CI_PROJECT_NAME/$ESCAPED_BRANCH_NAME/$REVISION"
+    - ARTIFACTS_PATH="$GITLAB_HTTP_SERVER/idf/esp-idf/builds/$CI_BUILD_ID/artifacts/browse/$CI_BUILD_REF"
     # clone test bench
     - git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
     - cd auto_test_script
     # generate report
-    - python CITestReport.py -l $LOG_PATH -t $TEST_CASE_FILE_PATH -p $REPORT_PATH
-
+    - TEST_RESULT=Pass
+    - python CITestReport.py -l $LOG_PATH -t $TEST_CASE_FILE_PATH -p $REPORT_PATH -r $RESULT_PATH -a $ARTIFACTS_PATH || TEST_RESULT=Fail
+    # commit to CI-test-result project
+    - git clone $GITLAB_SSH_SERVER/qa/CI-test-result.git
+    - rm -rf CI-test-result/RawData/$RESULT_PATH
+    - cp -R $CI_PROJECT_NAME CI-test-result/RawData
+    - cd CI-test-result
+    # config git user
+    - git config --global user.email "ci-test-result@espressif.com"
+    - git config --global user.name "ci-test-result"
+    # commit test result
+    - git add .
+    - git commit . -m "update test result for $CI_PROJECT_NAME/$CI_BUILD_REF_NAME/$CI_BUILD_REF, pipeline ID $CI_PIPELINE_ID" || exit 0
+    - git push origin master
+    - test "${TEST_RESULT}" = "Pass" || exit 1
 
 push_master_to_github:
   before_script:
@@ -213,11 +257,11 @@ deploy_docs:
   variables:
     # LOCAL_ENV_CONFIG_PATH: define in template and jobs can overwrite if required
     LOCAL_ENV_CONFIG_PATH: /home/gitlab-runner/LocalConfig/ESP32_IDF
-    BIN_PATH: "$CI_PROJECT_DIR/SSC/build/"
+    BIN_PATH: "$CI_PROJECT_DIR/SSC/ssc_bin/SSC"
     APP_NAME: "ssc"
     LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
     # append test level folder to TEST_CASE_FILE_PATH in before_script of test job
-    TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test"
+    TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test/integration_test"
     # jobs MUST set CONFIG_FILE in before_script, and overwrite the variables above if necessary
 
   artifacts:
@@ -227,6 +271,8 @@ deploy_docs:
     expire_in: 6 mos
 
   script:
+    # remove artifacts from last stage (UT logs)
+    - rm -rf $LOG_PATH
     # add gitlab ssh key
     - mkdir -p ~/.ssh
     - chmod 700 ~/.ssh
@@ -248,6 +294,8 @@ deploy_docs:
     # can only be triggered
     - triggers
   script:
+    # remove artifacts from last stage (UT logs)
+    - rm -rf $LOG_PATH
     # must be night build triggers, otherwise exit without test
     - test $NIGHT_BUILD = "Yes" || exit 0
     # add gitlab ssh key
@@ -263,13 +311,34 @@ deploy_docs:
     # run test
     - python CIRunner.py -l $LOG_PATH -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH bin_path $APP_NAME $BIN_PATH
 
+# template for unit test jobs
+.unit_test_template: &unit_test_template
+  <<: *test_template
+  allow_failure: false
+  stage: unit_test
+
+  variables:
+    # jobs MUST set CONFIG_FILE in before_script, and overwrite the variables above if necessary
+    LOCAL_ENV_CONFIG_PATH: /home/gitlab-runner/LocalConfig/ESP32_IDF
+    BIN_PATH: "$CI_PROJECT_DIR/tools/unit-test-app/build/"
+    LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
+    APP_NAME: "ut"
+    TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test/unit_test"
+
+UT_Function_SYS_01:
+  <<: *unit_test_template
+  tags:
+    - ESP32_IDF
+    - UT_T1_1
+  before_script:
+    - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/UT_Function_SYS_01.yml
+
 IT_Function_SYS_01:
   <<: *test_template
   tags:
     - ESP32_IDF
     - SSC_T1_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_SYS_01.yml
 
 IT_Function_WIFI_01:
@@ -279,7 +348,6 @@ IT_Function_WIFI_01:
     - SSC_T1_1
     - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_01.yml
 
 IT_Function_WIFI_02:
@@ -289,7 +357,6 @@ IT_Function_WIFI_02:
     - SSC_T1_1
     - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_02.yml
 
 IT_Function_TCPIP_01:
@@ -299,7 +366,6 @@ IT_Function_TCPIP_01:
     - SSC_T1_1
     - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_01.yml
 
 IT_Function_TCPIP_02:
@@ -307,9 +373,7 @@ IT_Function_TCPIP_02:
   tags:
     - ESP32_IDF
     - SSC_T1_1
-    - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_02.yml
 
 IT_Function_TCPIP_03:
@@ -319,7 +383,6 @@ IT_Function_TCPIP_03:
     - SSC_T1_1
     - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_03.yml
 
 IT_Function_TCPIP_04:
@@ -329,7 +392,6 @@ IT_Function_TCPIP_04:
     - SSC_T1_1
     - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_04.yml
 
 IT_Function_TCPIP_05:
@@ -337,36 +399,95 @@ IT_Function_TCPIP_05:
   tags:
     - ESP32_IDF
     - SSC_T1_1
-    - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_05.yml
 
+IT_Stress_WIFI_01:
+  <<: *test_template_night
+  tags:
+    - ESP32_IDF
+    - SSC_T5_1
+  before_script:
+    - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Stress_WIFI_01.yml
+
+IT_Stress_TCPIP_01:
+  <<: *test_template_night
+  tags:
+    - ESP32_IDF
+    - SSC_T1_1
+  before_script:
+    - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Stress_TCPIP_01.yml
+
+IT_Stress_TCPIP_02:
+  <<: *test_template_night
+  tags:
+    - ESP32_IDF
+    - SSC_T2_1
+  before_script:
+    - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Stress_TCPIP_02.yml
+
+IT_Stress_TCPIP_03:
+  <<: *test_template_night
+  tags:
+    - ESP32_IDF
+    - SSC_T1_1
+  before_script:
+    - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Stress_TCPIP_03.yml
+
+IT_Stress_TCPIP_04:
+  <<: *test_template_night
+  tags:
+    - ESP32_IDF
+    - SSC_T2_1
+  before_script:
+    - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Stress_TCPIP_04.yml
+
+IT_Stable_TCPIP_01:
+  <<: *test_template_night
+  tags:
+    - ESP32_IDF
+    - SSC_T5_1
+  before_script:
+    - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Stable_TCPIP_01.yml
+
+IT_Stable_TCPIP_02:
+  <<: *test_template_night
+  tags:
+    - ESP32_IDF
+    - SSC_T1_1
+  before_script:
+    - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Stable_TCPIP_02.yml
+
+IT_Stable_TCPIP_03:
+  <<: *test_template_night
+  tags:
+    - ESP32_IDF
+    - SSC_T5_1
+  before_script:
+    - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Stable_TCPIP_03.yml
+
 IT_Function_TCPIP_06:
   <<: *test_template_night
   tags:
     - ESP32_IDF
     - SSC_T1_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_06.yml
 
 IT_Function_WIFI_03:
   <<: *test_template
   tags:
     - ESP32_IDF
-    - SSC_T3_PhyMode
+    - SSC_T1_APC
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_03.yml
 
 IT_Function_WIFI_04:
   <<: *test_template
   tags:
     - ESP32_IDF
-    - SSC_T1_APC
+    - SSC_T3_PhyMode
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_04.yml
 
 IT_Function_WIFI_05:
@@ -375,7 +496,6 @@ IT_Function_WIFI_05:
     - ESP32_IDF
     - SSC_T1_WEP
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_05.yml
 
 IT_Function_WIFI_06:
@@ -384,7 +504,6 @@ IT_Function_WIFI_06:
     - ESP32_IDF
     - SSC_T2_PhyMode
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_06.yml
 
 IT_Function_TCPIP_07:
@@ -393,9 +512,7 @@ IT_Function_TCPIP_07:
     - ESP32_IDF
     - SSC_T1_1
     - SSC_T1_2
-    - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_07.yml
 
 IT_Function_TCPIP_08:
@@ -403,8 +520,8 @@ IT_Function_TCPIP_08:
   tags:
     - ESP32_IDF
     - SSC_T1_1
+    - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_08.yml
 
 IT_Function_TCPIP_09:
@@ -412,8 +529,8 @@ IT_Function_TCPIP_09:
   tags:
     - ESP32_IDF
     - SSC_T1_1
+    - SSC_T1_2
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_09.yml
 
 IT_Function_TCPIP_10:
@@ -422,9 +539,7 @@ IT_Function_TCPIP_10:
     - ESP32_IDF
     - SSC_T1_1
     - SSC_T1_2
-    - SSC_T2_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_10.yml
 
 IT_Function_TCPIP_11:
@@ -433,7 +548,6 @@ IT_Function_TCPIP_11:
     - ESP32_IDF
     - SSC_T1_1
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_11.yml
 
 IT_Function_TCPIP_12:
@@ -441,7 +555,6 @@ IT_Function_TCPIP_12:
   tags:
     - ESP32_IDF
     - SSC_T1_1
-    - SSC_T1_2
   before_script:
-    - TEST_CASE_FILE_PATH=$TEST_CASE_FILE_PATH/integration_test
     - CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_12.yml
+