mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
0df0d74d5d
fix bug that deploy when test failed: test report will be a single stage. The result of test report will be calculated from the result of all test jobs in test stage. So it will only deploy when all test job passed. See merge request !140
446 lines
12 KiB
YAML
446 lines
12 KiB
YAML
stages:
|
|
- build
|
|
- 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_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
|
|
- 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
|
|
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"
|
|
# 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
|
|
|
|
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:
|
|
<<: *test_template
|
|
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_WIFI_01.yml
|
|
|
|
IT_Function_WIFI_02:
|
|
<<: *test_template
|
|
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_WIFI_02.yml
|
|
|
|
IT_Function_TCPIP_01:
|
|
<<: *test_template
|
|
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_01.yml
|
|
|
|
IT_Function_TCPIP_02:
|
|
<<: *test_template
|
|
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:
|
|
<<: *test_template
|
|
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_03.yml
|
|
|
|
IT_Function_TCPIP_04:
|
|
<<: *test_template
|
|
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_04.yml
|
|
|
|
IT_Function_TCPIP_05:
|
|
<<: *test_template
|
|
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_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
|
|
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
|
|
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:
|
|
<<: *test_template
|
|
tags:
|
|
- 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:
|
|
<<: *test_template
|
|
tags:
|
|
- 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:
|
|
<<: *test_template
|
|
tags:
|
|
- 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:
|
|
<<: *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_TCPIP_08.yml
|
|
|
|
IT_Function_TCPIP_09:
|
|
<<: *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_TCPIP_09.yml
|
|
|
|
IT_Function_TCPIP_10:
|
|
<<: *test_template
|
|
tags:
|
|
- 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:
|
|
<<: *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_TCPIP_11.yml
|
|
|
|
IT_Function_TCPIP_12:
|
|
<<: *test_template
|
|
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
|