139fdcb9ec
save logs as test_report artifacts save all logs as test report artifacts. Testers only need to download artifacts for test report to analysis test result. See merge request !217
470 lines
12 KiB
YAML
470 lines
12 KiB
YAML
stages:
|
|
- build
|
|
- unit_test
|
|
- test
|
|
- test_report
|
|
- deploy
|
|
|
|
before_script:
|
|
# add gitlab ssh key
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
|
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
|
|
|
# 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
|
|
# fetch all submodules
|
|
- git submodule update --init --recursive
|
|
|
|
build_template_app:
|
|
stage: build
|
|
image: espressif/esp32-ci-env
|
|
tags:
|
|
- build
|
|
|
|
variables:
|
|
SDK_PATH: "$CI_PROJECT_DIR"
|
|
IDF_PATH: "$CI_PROJECT_DIR"
|
|
GIT_STRATEGY: clone
|
|
|
|
script:
|
|
- git clone https://github.com/espressif/esp-idf-template.git
|
|
- cd esp-idf-template
|
|
# Try to use the same branch name for esp-idf-template that we're
|
|
# using on esp-idf. If it doesn't exist then just stick to the default
|
|
# branch
|
|
- git checkout ${CI_BUILD_REF_NAME} || echo "Using esp-idf-template default branch..."
|
|
- make defconfig
|
|
# Test debug build (default)
|
|
- make all V=1
|
|
# Now test release build
|
|
- make clean
|
|
- sed -i.bak -e's/CONFIG_OPTIMIZATION_LEVEL_DEBUG\=y/CONFIG_OPTIMIZATION_LEVEL_RELEASE=y/' sdkconfig
|
|
- make defconfig
|
|
- make all V=1
|
|
|
|
|
|
.build_gitlab: &build_template
|
|
stage: build
|
|
tags:
|
|
- build
|
|
image: espressif/esp32-ci-env
|
|
|
|
variables:
|
|
SDK_PATH: "$CI_PROJECT_DIR"
|
|
IDF_PATH: "$CI_PROJECT_DIR"
|
|
GIT_STRATEGY: clone
|
|
|
|
build_ssc:
|
|
<<: *build_template
|
|
artifacts:
|
|
paths:
|
|
- ./SSC/build/*.bin
|
|
- ./SSC/build/*.elf
|
|
- ./SSC/build/*.map
|
|
- ./SSC/build/bootloader/*.bin
|
|
expire_in: 6 mos
|
|
|
|
script:
|
|
- git clone $GITLAB_SSH_SERVER/yinling/SSC.git
|
|
- cd SSC
|
|
- git checkout ${CI_BUILD_REF_NAME} || echo "Using SSC default branch..."
|
|
- make defconfig
|
|
- chmod +x gen_misc_ng.sh
|
|
- ./gen_misc_ng.sh
|
|
|
|
build_esp_idf_tests:
|
|
<<: *build_template
|
|
artifacts:
|
|
paths:
|
|
- ./esp-idf-tests/build/*.bin
|
|
- ./esp-idf-tests/build/*.elf
|
|
- ./esp-idf-tests/build/*.map
|
|
- ./esp-idf-tests/build/bootloader/*.bin
|
|
expire_in: 6 mos
|
|
|
|
script:
|
|
- git clone $GITLAB_SSH_SERVER/idf/esp-idf-tests.git
|
|
- cd esp-idf-tests
|
|
- git checkout ${CI_BUILD_REF_NAME} || echo "Using default branch..."
|
|
- make defconfig
|
|
- make
|
|
|
|
build_examples:
|
|
<<: *build_template
|
|
artifacts:
|
|
paths:
|
|
- build_examples/*/*/build/*.bin
|
|
- build_examples/*/*/build/*.elf
|
|
- build_examples/*/*/build/*.map
|
|
- build_examples/*/*/build/bootloader/*.bin
|
|
expire_in: 6 mos
|
|
|
|
script:
|
|
# it's not possible to build 100% out-of-tree and have the "artifacts"
|
|
# mechanism work, but this is the next best thing
|
|
- mkdir build_examples
|
|
- cd build_examples
|
|
- ${IDF_PATH}/make/build_examples.sh
|
|
|
|
build_docs:
|
|
stage: build
|
|
image: espressif/esp32-ci-env
|
|
tags:
|
|
- 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:
|
|
- docs/_build/html
|
|
expire_in: 1 mos
|
|
|
|
|
|
test_nvs_on_host:
|
|
stage: test
|
|
image: espressif/esp32-ci-env
|
|
tags:
|
|
- nvs_host_test
|
|
script:
|
|
- cd components/nvs_flash/test
|
|
- make test
|
|
|
|
test_build_system:
|
|
stage: test
|
|
image: espressif/esp32-ci-env
|
|
tags:
|
|
- build_test
|
|
variables:
|
|
IDF_PATH: "$CI_PROJECT_DIR"
|
|
script:
|
|
- ./make/test_build_system.sh
|
|
|
|
test_report:
|
|
stage: test_report
|
|
only:
|
|
- master
|
|
- triggers
|
|
tags:
|
|
- test_report
|
|
variables:
|
|
LOG_PATH: "$CI_PROJECT_DIR/$CI_BUILD_REF"
|
|
TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test"
|
|
REPORT_PATH: "$CI_PROJECT_DIR/CI_Test_Report"
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $REPORT_PATH
|
|
- $LOG_PATH
|
|
expire_in: 12 mos
|
|
script:
|
|
# 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
|
|
|
|
|
|
push_master_to_github:
|
|
before_script:
|
|
- echo "Not setting up GitLab key, not fetching submodules"
|
|
stage: deploy
|
|
only:
|
|
- master
|
|
tags:
|
|
- deploy
|
|
when: on_success
|
|
image: espressif/esp32-ci-env
|
|
variables:
|
|
GIT_STRATEGY: clone
|
|
script:
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo -n $GH_PUSH_KEY > ~/.ssh/id_rsa_base64
|
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
|
- git remote add github git@github.com:espressif/esp-idf.git
|
|
- git push --follow-tags github HEAD:master
|
|
|
|
|
|
deploy_docs:
|
|
before_script:
|
|
- echo "Not setting up GitLab key, not fetching submodules"
|
|
stage: deploy
|
|
only:
|
|
- master
|
|
- triggers
|
|
tags:
|
|
- deploy
|
|
image: espressif/esp32-ci-env
|
|
script:
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo -n $DOCS_DEPLOY_KEY > ~/.ssh/id_rsa_base64
|
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- echo -e "Host $DOCS_SERVER\n\tStrictHostKeyChecking no\n\tUser $DOCS_SERVER_USER\n" >> ~/.ssh/config
|
|
- export GIT_VER=$(git describe --always)
|
|
- cd docs/_build/
|
|
- mv html $GIT_VER
|
|
- tar czvf $GIT_VER.tar.gz $GIT_VER
|
|
- scp $GIT_VER.tar.gz $DOCS_SERVER:$DOCS_PATH
|
|
- ssh $DOCS_SERVER -x "cd $DOCS_PATH && tar xzvf $GIT_VER.tar.gz && rm -f latest && ln -s $GIT_VER latest"
|
|
|
|
|
|
# AUTO GENERATED PART START, DO NOT MODIFY CONTENT BELOW
|
|
# template for test jobs
|
|
.test_template: &test_template
|
|
stage: test
|
|
when: on_success
|
|
only:
|
|
- master
|
|
- triggers
|
|
allow_failure: true
|
|
|
|
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/"
|
|
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/integration_test"
|
|
# jobs MUST set CONFIG_FILE in before_script, and overwrite the variables above if necessary
|
|
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $LOG_PATH
|
|
expire_in: 6 mos
|
|
|
|
script:
|
|
# add gitlab ssh key
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
|
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
|
# clone test bench
|
|
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
|
- cd auto_test_script
|
|
# 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 overnight test jobs
|
|
.test_template_night: &test_template_night
|
|
<<: *test_template
|
|
only:
|
|
# can only be triggered
|
|
- triggers
|
|
script:
|
|
# must be night build triggers, otherwise exit without test
|
|
- test $NIGHT_BUILD = "Yes" || exit 0
|
|
# add gitlab ssh key
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
|
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
|
# clone test bench
|
|
- git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
|
|
- cd auto_test_script
|
|
# 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/esp-idf-tests/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:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_SYS_01.yml
|
|
|
|
IT_Function_WIFI_01:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T2_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_01.yml
|
|
|
|
IT_Function_WIFI_02:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T2_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_02.yml
|
|
|
|
IT_Function_TCPIP_01:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T2_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_01.yml
|
|
|
|
IT_Function_TCPIP_02:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T2_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_02.yml
|
|
|
|
IT_Function_TCPIP_03:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T2_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_03.yml
|
|
|
|
IT_Function_TCPIP_04:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T2_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_04.yml
|
|
|
|
IT_Function_TCPIP_05:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T2_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_05.yml
|
|
|
|
IT_Function_TCPIP_06:
|
|
<<: *test_template_night
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_06.yml
|
|
|
|
IT_Function_WIFI_03:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T3_PhyMode
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_03.yml
|
|
|
|
IT_Function_WIFI_04:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_APC
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_04.yml
|
|
|
|
IT_Function_WIFI_05:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_WEP
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_05.yml
|
|
|
|
IT_Function_WIFI_06:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T2_PhyMode
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_WIFI_06.yml
|
|
|
|
IT_Function_TCPIP_07:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T1_2
|
|
- SSC_T2_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_07.yml
|
|
|
|
IT_Function_TCPIP_08:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_08.yml
|
|
|
|
IT_Function_TCPIP_09:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_09.yml
|
|
|
|
IT_Function_TCPIP_10:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T1_2
|
|
- SSC_T2_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_10.yml
|
|
|
|
IT_Function_TCPIP_11:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
- SSC_T1_2
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_11.yml
|
|
|
|
IT_Function_TCPIP_12:
|
|
<<: *test_template
|
|
tags:
|
|
- ESP32_IDF
|
|
- SSC_T1_1
|
|
before_script:
|
|
- CONFIG_FILE=$TEST_CASE_FILE_PATH/CIConfigs/IT_Function_TCPIP_12.yml
|