Speed up travis builds: enable ccache, cache cargo and reduce test timeouts (#957)
* Do not hang trying to upload to docker in unofficial repos docker push hung asking for a password if the password environment variable was not set. With this change it fails immediately. * Enable ccache on linux and osx * Cache homebrew downloads This does not avoid the compilation of the homebrew packages but stores the downloaded sources, speeding up the installation process. * Enable cargo caching * Cache load-tester cargo binaries * Reduce default timeout per test suite to 120 seconds One of the tests hangs in the CI system, reducing the timeout to have quicker feedback. It can be re-adjusted in the future if 120 is not enough for a successful run.
This commit is contained in:
parent
d1193ab407
commit
37f50ff6db
5 changed files with 20 additions and 7 deletions
15
.travis.yml
15
.travis.yml
|
@ -17,16 +17,27 @@ matrix:
|
|||
compiler:
|
||||
- clang
|
||||
|
||||
cache:
|
||||
- ccache: true
|
||||
- directories:
|
||||
- $HOME/Library/Caches/Homebrew
|
||||
- $HOME/.cargo
|
||||
- $TRAVIS_BUILD_DIR/load-tester/target
|
||||
|
||||
before_install:
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update && brew install qt5 && brew cask install xquartz && brew upgrade boost && brew install rust; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then ci/build-docker-image.sh docker/ci/Dockerfile nanocurrency/nano-ci; fi
|
||||
|
||||
install:
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew install ccache; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then export PATH="/usr/local/opt/ccache/libexec:$PATH"; fi
|
||||
|
||||
script:
|
||||
- if [ -n "$ONE_TIME_TESTS" ]; then ci/check-commit-format.sh; fi
|
||||
- if [ -n "$ONE_TIME_TESTS" ]; then doxygen doxygen.config; fi # TODO also deploy the built HTML
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then ci/build-travis.sh "/usr/local/opt/qt5/lib/cmake/Qt5"; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker run -v $TRAVIS_BUILD_DIR:/workspace nanocurrency/nano-ci /bin/bash -c "cd /workspace && ASAN=${ASAN} TSAN=${TSAN} ./ci/build-travis.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then docker run -v $TRAVIS_BUILD_DIR:/workspace -v $HOME/.ccache:/ccache -v $HOME/.cargo:/cargo nanocurrency/nano-ci /bin/bash -c "apt install ccache; cd /workspace && ASAN=${ASAN} TSAN=${TSAN} CCACHE_DIR=/ccache CARGO_HOME=/cargo ./ci/build-travis.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 ${PWD}"; fi
|
||||
|
||||
deploy:
|
||||
provider: script
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
cmake_minimum_required (VERSION 2.8.11)
|
||||
cmake_minimum_required (VERSION 3.4)
|
||||
project (rai)
|
||||
|
||||
set (CPACK_PACKAGE_VERSION_MAJOR "15")
|
||||
|
|
|
@ -30,6 +30,7 @@ cmake \
|
|||
-DCMAKE_VERBOSE_MAKEFILE=ON \
|
||||
-DBOOST_ROOT=/usr/local \
|
||||
-DQt5_DIR=${qt_dir} \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||
${SANITIZERS} \
|
||||
..
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ set -e
|
|||
|
||||
scripts="$(dirname "$0")"
|
||||
|
||||
docker login -u nanocurrency -p "$DOCKER_PASSWORD"
|
||||
echo "$DOCKER_PASSWORD" | docker login -u nanocurrency --password-stdin
|
||||
|
||||
# We push this just so it can be a cache next time
|
||||
if [ "$TRAVIS_BRANCH" = "master" ]; then
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
build_dir=${1-${PWD}}
|
||||
TIMEOUT_DEFAULT=120
|
||||
|
||||
BUSYBOX_BASH=${BUSYBOX_BASH-0}
|
||||
|
||||
|
@ -25,7 +26,7 @@ xvfb_run_() {
|
|||
Xvfb :2 -screen 0 1024x768x24 &
|
||||
xvfb_pid=$!
|
||||
sleep ${INIT_DELAY_SEC}
|
||||
DISPLAY=:2 ${TIMEOUT_CMD} ${TIMEOUT_TIME_ARG} ${TIMEOUT_SEC-420} $@
|
||||
DISPLAY=:2 ${TIMEOUT_CMD} ${TIMEOUT_TIME_ARG} ${TIMEOUT_SEC-${TIMEOUT_DEFAULT}} $@
|
||||
res=${?}
|
||||
kill ${xvfb_pid}
|
||||
|
||||
|
@ -41,13 +42,13 @@ run_tests() {
|
|||
TIMEOUT_TIME_ARG=""
|
||||
fi
|
||||
|
||||
${TIMEOUT_CMD} ${TIMEOUT_TIME_ARG} ${TIMEOUT_SEC-420} ./core_test
|
||||
${TIMEOUT_CMD} ${TIMEOUT_TIME_ARG} ${TIMEOUT_SEC-${TIMEOUT_DEFAULT}} ./core_test
|
||||
core_test_res=${?}
|
||||
|
||||
xvfb_run_ ./qt_test
|
||||
qt_test_res=${?}
|
||||
|
||||
${TIMEOUT_CMD} ${TIMEOUT_TIME_ARG} ${TIMEOUT_SEC-420} ./load_test ./rai_node -s 150
|
||||
${TIMEOUT_CMD} ${TIMEOUT_TIME_ARG} ${TIMEOUT_SEC-${TIMEOUT_DEFAULT}} ./load_test ./rai_node -s 150
|
||||
load_test_res=${?}
|
||||
|
||||
echo "Core Test return code: ${core_test_res}"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue