From 7ac0f53da307da46a79e6dbb9ebe7424e128c2d4 Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Fri, 25 Jan 2019 14:03:00 +0100 Subject: [PATCH] travis: Attempt to setup travis without docker and without sudo This should speed up testing since it no longer requires virtualization. --- .travis.yml | 34 +++++++++++++++++++--------------- .travis/build.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++ Makefile | 2 +- 3 files changed, 64 insertions(+), 16 deletions(-) create mode 100755 .travis/build.sh diff --git a/.travis.yml b/.travis.yml index 8fe512093..d5f37ab3f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,24 @@ language: c -dist: trusty -sudo: true +dist: xenial +sudo: false notifications: email: false +addons: + apt: + packages: + - python3-pip + - libsqlite3-dev + - shellcheck + - cppcheck + - valgrind + - libomp-dev + env: - - ARCH=32 SOURCE_CHECK_ONLY=true - ARCH=64 SOURCE_CHECK_ONLY=true CDEBUGFLAGS="-std=gnu11 -g -fstack-protector -O3 -flto" LDFLAGS="-O3 -flto" - - VALGRIND=0 ARCH=32 DEVELOPER=1 COMPILER=gcc TEST_GROUP=1 TEST_GROUP_COUNT=2 SOURCE_CHECK_ONLY=false - - VALGRIND=0 ARCH=32 DEVELOPER=1 COMPILER=gcc TEST_GROUP=2 TEST_GROUP_COUNT=2 SOURCE_CHECK_ONLY=false +# - VALGRIND=0 ARCH=32 DEVELOPER=1 COMPILER=gcc TEST_GROUP=1 TEST_GROUP_COUNT=2 SOURCE_CHECK_ONLY=false +# - VALGRIND=0 ARCH=32 DEVELOPER=1 COMPILER=gcc TEST_GROUP=2 TEST_GROUP_COUNT=2 SOURCE_CHECK_ONLY=false - VALGRIND=0 ARCH=64 DEVELOPER=1 COMPILER=gcc SOURCE_CHECK_ONLY=false - VALGRIND=0 ARCH=64 DEVELOPER=0 COMPILER=gcc COMPAT=0 SOURCE_CHECK_ONLY=false - VALGRIND=1 ARCH=64 DEVELOPER=0 COMPILER=gcc TEST_GROUP=1 TEST_GROUP_COUNT=3 SOURCE_CHECK_ONLY=false @@ -22,15 +31,10 @@ env: - VALGRIND=1 ARCH=64 DEVELOPER=1 COMPILER=gcc TEST_GROUP=4 TEST_GROUP_COUNT=6 SOURCE_CHECK_ONLY=false - VALGRIND=1 ARCH=64 DEVELOPER=1 COMPILER=gcc TEST_GROUP=5 TEST_GROUP_COUNT=6 SOURCE_CHECK_ONLY=false - VALGRIND=1 ARCH=64 DEVELOPER=1 COMPILER=gcc TEST_GROUP=6 TEST_GROUP_COUNT=6 SOURCE_CHECK_ONLY=false +cache: + directories: + dependencies + external -# Trusty (aka 14.04) is way way too old, so run in docker... script: - - docker pull cdecker/lightning-ci:${ARCH}bit | tee - - env | grep -E '^[A-Z_]+\=' | grep -vi travis | tee /tmp/envlist - - echo SLOW_MACHINE=1 >> /tmp/envlist - - docker run --rm=true --env-file=/tmp/envlist -v "${TRAVIS_BUILD_DIR}":/build -t cdecker/lightning-ci:${ARCH}bit ./configure CC=${COMPILER:-gcc} - - $SOURCE_CHECK_ONLY || docker run --rm=true --env-file=/tmp/envlist -v "${TRAVIS_BUILD_DIR}":/build -t cdecker/lightning-ci:${ARCH}bit make -j3 - - $SOURCE_CHECK_ONLY || docker run --rm=true --env-file=/tmp/envlist -v "${TRAVIS_BUILD_DIR}":/build -t cdecker/lightning-ci:${ARCH}bit make check - - (! $SOURCE_CHECK_ONLY) || git clone https://github.com/lightningnetwork/lightning-rfc.git - - (! $SOURCE_CHECK_ONLY) || docker run --rm=true -v "${TRAVIS_BUILD_DIR}":/build -t cdecker/lightning-ci:${ARCH}bit make clean - - (! $SOURCE_CHECK_ONLY) || docker run --rm=true -v "${TRAVIS_BUILD_DIR}":/build -t cdecker/lightning-ci:${ARCH}bit make check-source BOLTDIR=lightning-rfc + .travis/build.sh diff --git a/.travis/build.sh b/.travis/build.sh new file mode 100755 index 000000000..624030b9c --- /dev/null +++ b/.travis/build.sh @@ -0,0 +1,44 @@ +#!/bin/bash -x +set -e + +CWD=$(pwd) +export SLOW_MACHINE=1 +export CC=${COMPILER:-gcc} +export DEVELOPER=${DEVELOPER:-1} +export SOURCE_CHECK_ONLY=${SOURCE_CHECK_ONLY:-"false"} +export COMPAT=${COMPAT:-1} +export PATH=$CWD/dependencies/bin:"$HOME"/.local/bin:"$PATH" + +mkdir -p dependencies/bin || true + +# Download bitcoind and bitcoin-cli +if [ ! -f dependencies/bin/bitcoind ]; then + wget https://bitcoin.org/bin/bitcoin-core-0.17.1/bitcoin-0.17.1-x86_64-linux-gnu.tar.gz + tar -xzf bitcoin-0.17.1-x86_64-linux-gnu.tar.gz + mv bitcoin-0.17.1/bin/* dependencies/bin + rm -rf bitcoin-0.17.1-x86_64-linux-gnu.tar.gz bitcoin-0.17.1 +fi + +pyenv global 3.7 +pip3 install --user --quiet -r tests/requirements.txt +pip3 install --quiet \ + pytest-test-groups==1.0.3 + +echo "Configuration which is going to be built:" +echo -en 'travis_fold:start:script.1\\r' +./configure CC="$CC" +cat config.vars +echo -en 'travis_fold:end:script.1\\r' + +if [ "$SOURCE_CHECK_ONLY" == "false" ]; then + echo -en 'travis_fold:start:script.2\\r' + make -j3 > /dev/null + echo -en 'travis_fold:end:script.2\\r' + + echo -en 'travis_fold:start:script.3\\r' + make check + echo -en 'travis_fold:end:script.3\\r' +else + git clone https://github.com/lightningnetwork/lightning-rfc.git + make check-source BOLTDIR=lightning-rfc +fi diff --git a/Makefile b/Makefile index e1f4a2746..f0cb9eeb3 100644 --- a/Makefile +++ b/Makefile @@ -52,7 +52,7 @@ endif # Timeout shortly before the 600 second travis silence timeout # (method=thread to support xdist) -PYTEST_OPTS := -v --timeout=550 --timeout_method=thread +PYTEST_OPTS := -v --timeout=550 --timeout_method=thread -p no:logging # This is where we add new features as bitcoin adds them. FEATURES :=