diff --git a/.ci/travis/linux/before_install.sh b/.ci/travis/linux/before_install.sh index c654953ac3b..c9bded6cb42 100755 --- a/.ci/travis/linux/before_install.sh +++ b/.ci/travis/linux/before_install.sh @@ -13,5 +13,4 @@ # # ########################################################################### - #pip3 install termcolor diff --git a/.ci/travis/linux/before_script.sh b/.ci/travis/linux/before_script.sh index 06ff7e441ce..3c3b1abd94e 100755 --- a/.ci/travis/linux/before_script.sh +++ b/.ci/travis/linux/before_script.sh @@ -19,13 +19,14 @@ pushd .docker echo "travis_fold:start:travis_env" echo "${bold}${endbold}" -echo "TRAVIS_BRANCH $TRAVIS_BRANCH" -echo "TRAVIS_EVENT_TYPE $TRAVIS_EVENT_TYPE" -echo "DOCKER_TAG $DOCKER_TAG" -echo "DOCKER_DEPS_PUSH $DOCKER_DEPS_PUSH" -echo "DOCKER_DEPS_IMAGE_REBUILD $DOCKER_DEPS_IMAGE_REBUILD" -echo "DOCKER_QGIS_IMAGE_BUILD_PUSH $DOCKER_QGIS_IMAGE_BUILD_PUSH" -echo "QGIS_LAST_BUILD_SUCCESS $QGIS_LAST_BUILD_SUCCESS" +echo "TRAVIS_BRANCH: $TRAVIS_BRANCH" +echo "TRAVIS_EVENT_TYPE: $TRAVIS_EVENT_TYPE" +echo "DOCKER_TAG: $DOCKER_TAG" +echo "DOCKER_DEPS_PUSH: $DOCKER_DEPS_PUSH" +echo "DOCKER_DEPS_IMAGE_REBUILD: $DOCKER_DEPS_IMAGE_REBUILD" +echo "DOCKER_QGIS_IMAGE_BUILD_PUSH: $DOCKER_QGIS_IMAGE_BUILD_PUSH" +echo "QGIS_LAST_BUILD_SUCCESS: $QGIS_LAST_BUILD_SUCCESS" +echo "TRAVIS_TIMESTAMP: $TRAVIS_TIMESTAMP" echo "travis_fold:end:travis_env" diff --git a/.ci/travis/linux/docker-build-test.sh b/.ci/travis/linux/docker-build-test.sh index 7aa5cd69c2d..761810d1453 100755 --- a/.ci/travis/linux/docker-build-test.sh +++ b/.ci/travis/linux/docker-build-test.sh @@ -59,11 +59,31 @@ echo "travis_fold:end:cmake" ####### # Build ####### +# Calculate the timeout for building. +# The tests should be aborted before travis times out, in order to allow uploading +# the ccache and therefore speedup subsequent e builds. +# +# Travis will kill the job after approx 90 minutes, we subtract 8 minutes for +# uploading and subtract the bootstrapping time from that. +# Hopefully clocks are in sync :) +TRAVIS_TIME=90 +UPLOAD_TIME=8 +CURRENT_TIME=`date +%s` +TIMEOUT=$(expr \( ${TRAVIS_TIME} - ${UPLOAD_TIME} \) \* 60 - ${CURRENT_TIME} + ${TRAVIS_TIMESTAMP}) +TIMEOUT=$(( ${TIMEOUT} < 300 ? 300 : ${TIMEOUT} )) +echo "Timeout: ${TIMEOUT}s (started at ${TRAVIS_TIMESTAMP}, current: ${CURRENT_TIME})" + # echo "travis_fold:start:ninja-build.1" echo "${bold}Building QGIS...${endbold}" -${CTEST_BUILD_COMMAND} +timeout ${TIMEOUT}s ${CTEST_BUILD_COMMAND} # echo "travis_fold:end:ninja-build.1" +rv=$? +if [ $rv -eq 124 ] ; then + printf '\n\n${bold}Build and test timeout. Please restart the build for meaningful results.${endbold}\n' + exit #$rv +fi + # Temporarily uncomment to debug ccache issues # echo "travis_fold:start:ccache-debug" # cat /tmp/cache.debug diff --git a/.docker/docker-compose.travis.yml b/.docker/docker-compose.travis.yml index cd94a0c510a..4a8207e1c96 100644 --- a/.docker/docker-compose.travis.yml +++ b/.docker/docker-compose.travis.yml @@ -23,6 +23,6 @@ services: - TRAVIS_OS_NAME=${TRAVIS_OS_NAME} - TRAVIS_CONFIG=${TRAVIS_CONFIG} - TRAVIS=${TRAVIS} + - TRAVIS_TIMESTAMP=${TRAVIS_TIMESTAMP} - QGIS_DISABLE_MESSAGE_HOOKS=1 - QGIS_NO_OVERRIDE_IMPORT=1 - diff --git a/.travis.yml b/.travis.yml index 49663660635..bb838016868 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,7 @@ matrix: # on cron job, QGIS image is built and push without testing - DOCKER_QGIS_IMAGE_BUILD_PUSH=$( [[ $TRAVIS_REPO_SLUG =~ qgis/QGIS ]] && [[ $TRAVIS_EVENT_TYPE =~ cron ]] && echo "true" || echo "false" ) - QGIS_LAST_BUILD_SUCCESS=true # TODO use API to know if last build succeed https://developer.travis-ci.com/resource/builds + - TRAVIS_TIMESTAMP=$(date +%s) - CCACHE_DIR=${HOME}/.ccache dist: trusty sudo: false