311a4cd678
support build multiple bin for SSC We need to build multiple SSC bin with different feature configs to do test. For example, we need different SSC bins to test socket API blocking/non-blocking usage with same test cases. SSC has a same branch to support build all pre-configured bins using `./gen_misc_ng.sh`. It will copy all bins to `./SSC/ssc_bin/`. This MR will change the artifacts path for `build_ssc` job and the `BIN_PATH` for test jobs using SSC. See merge request !219
467 lines
12 KiB
YAML
467 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/ssc_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/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/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
|