diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 897e61217..435b11208 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -218,6 +218,8 @@ build_esp_idf_tests: .build_examples_make_template: &build_examples_make_template <<: *build_template + # This is a workaround for a rarely encountered issue with building examples in CI. + # Probably related to building of Kconfig in 'make clean' stage retry: 1 artifacts: when: always @@ -251,7 +253,6 @@ build_esp_idf_tests: # same as above, but for CMake .build_examples_cmake_template: &build_examples_cmake_template <<: *build_template - retry: 1 artifacts: when: always paths: diff --git a/tools/ci/build_examples.sh b/tools/ci/build_examples.sh index 81576bf55..2210a4b45 100755 --- a/tools/ci/build_examples.sh +++ b/tools/ci/build_examples.sh @@ -75,7 +75,8 @@ else [ -z ${JOB_PATTERN} ] && die "JOB_PATTERN is bad" # parse number 'NUM' at the end of string 'some_your_text_NUM' - JOB_NUM=$( echo ${JOB_NAME} | sed -n -r 's/^.*_([0-9]+)$/\1/p' ) + # NOTE: Getting rid of the leading zero to get the decimal + JOB_NUM=$( echo ${JOB_NAME} | sed -n -r 's/^.*_0*([0-9]+)$/\1/p' ) [ -z ${JOB_NUM} ] && die "JOB_NUM is bad" # count number of the jobs @@ -120,14 +121,19 @@ build_example () { local BUILDLOG=${LOG_PATH}/ex_${ID}_log.txt touch ${BUILDLOG} + local FLASH_ARGS=build/download.config + make clean >>${BUILDLOG} 2>&1 && make defconfig >>${BUILDLOG} 2>&1 && make all >>${BUILDLOG} 2>&1 && - ( make print_flash_cmd | tail -n 1 >build/download.config ) >>${BUILDLOG} 2>&1 || + make print_flash_cmd >${FLASH_ARGS}.full 2>>${BUILDLOG} || { RESULT=$?; FAILED_EXAMPLES+=" ${EXAMPLE_NAME}" ; } + tail -n 1 ${FLASH_ARGS}.full > ${FLASH_ARGS} || : + test -s ${FLASH_ARGS} || die "Error: ${FLASH_ARGS} file is empty" + cat ${BUILDLOG} popd diff --git a/tools/ci/build_examples_cmake.sh b/tools/ci/build_examples_cmake.sh index 849943b93..50ce7f1e6 100755 --- a/tools/ci/build_examples_cmake.sh +++ b/tools/ci/build_examples_cmake.sh @@ -80,7 +80,8 @@ else [ -z ${JOB_PATTERN} ] && die "JOB_PATTERN is bad" # parse number 'NUM' at the end of string 'some_your_text_NUM' - JOB_NUM=$( echo ${JOB_NAME} | sed -n -r 's/^.*_([0-9]+)$/\1/p' ) + # NOTE: Getting rid of the leading zero to get the decimal + JOB_NUM=$( echo ${JOB_NAME} | sed -n -r 's/^.*_0*([0-9]+)$/\1/p' ) [ -z ${JOB_NUM} ] && die "JOB_NUM is bad" # count number of the jobs