Speed up TravisCI build

* Examples are no longer built on all travis images
* Coverage is no longer collected from all travis images
* Valgrind is no longer used with all travis images

This should greatly reduce the amount of compiling, downloading
binaries and general work the common images do.
This commit is contained in:
Martin Hořeňovský 2018-03-05 15:11:12 +01:00
parent 93db01c647
commit 1466686ade
1 changed files with 71 additions and 43 deletions

View File

@ -17,145 +17,140 @@ matrix:
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['valgrind', 'lcov', 'clang-3.5'] packages: ['lcov', 'clang-3.5']
env: COMPILER='clang++-3.5' VALGRIND=1 env: COMPILER='clang++-3.5'
- os: linux - os: linux
compiler: clang compiler: clang
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['valgrind', 'lcov', 'clang-3.6'] packages: ['lcov', 'clang-3.6']
env: COMPILER='clang++-3.6' VALGRIND=1 env: COMPILER='clang++-3.6'
# Travis's containers do not seem to have Clang 3.7 in apt, no matter what sources I add. # Clang 3.7 is intentionally skipped as we cannot get it easily on
# - os: linux # TravisCI container
# compiler: clang
# addons:
# apt:
# sources: *all_sources
# packages: ['valgrind', 'clang-3.7']
# env: COMPILER='clang++-3.7' VALGRIND=1
- os: linux - os: linux
compiler: clang compiler: clang
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['valgrind', 'lcov', 'clang-3.8'] packages: ['lcov', 'clang-3.8']
env: COMPILER='clang++-3.8' VALGRIND=1 env: COMPILER='clang++-3.8'
- os: linux - os: linux
compiler: clang compiler: clang
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['clang-3.9', 'valgrind', 'lcov'] packages: ['clang-3.9', 'lcov']
env: COMPILER='clang++-3.9' VALGRIND=1 env: COMPILER='clang++-3.9'
- os: linux - os: linux
compiler: clang compiler: clang
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['clang-4.0', 'valgrind', 'lcov'] packages: ['clang-4.0', 'lcov']
env: COMPILER='clang++-4.0' VALGRIND=1 env: COMPILER='clang++-4.0'
- os: linux - os: linux
compiler: clang compiler: clang
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['clang-5.0', 'valgrind', 'lcov'] packages: ['clang-5.0', 'lcov']
env: COMPILER='clang++-5.0' VALGRIND=1 env: COMPILER='clang++-5.0'
# 2/ Linux GCC Builds # 2/ Linux GCC Builds
- os: linux - os: linux
compiler: gcc compiler: gcc
addons: addons:
apt: apt:
sources: ['ubuntu-toolchain-r-test'] sources: *all_sources
packages: ['valgrind', 'lcov', 'g++-4.8'] packages: ['lcov', 'g++-4.8']
env: COMPILER='g++-4.8' VALGRIND=1 env: COMPILER='g++-4.8'
- os: linux - os: linux
compiler: gcc compiler: gcc
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['valgrind', 'lcov', 'g++-4.9'] packages: ['lcov', 'g++-4.9']
env: COMPILER='g++-4.9' VALGRIND=1 env: COMPILER='g++-4.9'
- os: linux - os: linux
compiler: gcc compiler: gcc
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['valgrind', 'lcov', 'g++-5'] packages: ['lcov', 'g++-5']
env: COMPILER='g++-5' VALGRIND=1 env: COMPILER='g++-5'
- os: linux - os: linux
compiler: gcc compiler: gcc
addons: &gcc6 addons: &gcc6
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['valgrind', 'lcov', 'g++-6'] packages: ['lcov', 'g++-6']
env: COMPILER='g++-6' VALGRIND=1 env: COMPILER='g++-6'
- os: linux - os: linux
compiler: gcc compiler: gcc
addons: &gcc7 addons: &gcc7
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['valgrind', 'lcov', 'g++-7'] packages: ['lcov', 'g++-7']
env: COMPILER='g++-7' VALGRIND=1 env: COMPILER='g++-7'
# 3b/ Linux C++14 Clang builds # 3b/ Linux C++14 Clang builds
# Note that we need newer libstdc++ for C++14 support
- os: linux - os: linux
compiler: clang compiler: clang
addons: addons:
apt: apt:
packages: ['clang-3.8', 'valgrind', 'lcov', 'libstdc++-6-dev'] packages: ['clang-3.8', 'lcov', 'libstdc++-6-dev']
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-trusty - llvm-toolchain-trusty
env: COMPILER='clang++-3.8' CPP14=1 VALGRIND=1 env: COMPILER='clang++-3.8' CPP14=1
- os: linux - os: linux
compiler: clang compiler: clang
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['clang-3.9', 'valgrind', 'lcov', 'libstdc++-6-dev'] packages: ['clang-3.9', 'lcov', 'libstdc++-6-dev']
env: COMPILER='clang++-3.9' CPP14=1 VALGRIND=1 env: COMPILER='clang++-3.9' CPP14=1
- os: linux - os: linux
compiler: clang compiler: clang
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['clang-4.0', 'valgrind', 'lcov', 'libstdc++-6-dev'] packages: ['clang-4.0', 'lcov', 'libstdc++-6-dev']
env: COMPILER='clang++-4.0' CPP14=1 VALGRIND=1 env: COMPILER='clang++-4.0' CPP14=1
- os: linux - os: linux
compiler: clang compiler: clang
addons: addons:
apt: apt:
sources: *all_sources sources: *all_sources
packages: ['clang-5.0', 'valgrind', 'lcov', 'libstdc++-6-dev'] packages: ['clang-5.0', 'lcov', 'libstdc++-6-dev']
env: COMPILER='clang++-5.0' CPP14=1 VALGRIND=1 env: COMPILER='clang++-5.0' CPP14=1
# 4a/ Linux C++14 GCC builds # 4a/ Linux C++14 GCC builds
- os: linux - os: linux
compiler: gcc compiler: gcc
addons: *gcc6 addons: *gcc6
env: COMPILER='g++-6' CPP14=1 VALGRIND=1 env: COMPILER='g++-6' CPP14=1
- os: linux - os: linux
compiler: gcc compiler: gcc
addons: *gcc7 addons: *gcc7
env: COMPILER='g++-7' CPP14=1 VALGRIND=1 env: COMPILER='g++-7' CPP14=1
# 5/ OSX Clang Builds # 5/ OSX Clang Builds
- os: osx - os: osx
@ -183,6 +178,37 @@ matrix:
compiler: clang compiler: clang
env: COMPILER='clang++' CPP14=1 env: COMPILER='clang++' CPP14=1
# 6/ Special builds -- examples, coverage, valgrind, etc.
- os: linux
compiler: gcc
addons:
apt:
sources: *all_sources
packages: ['lcov', 'g++-7']
env: COMPILER='g++-7' CPP14=1 EXAMPLES=1 COVERAGE=1
- os: linux
compiler: clang
addons:
apt:
packages: ['clang-3.8', 'lcov']
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty
env: COMPILER='clang++-3.8' EXAMPLES=1 COVERAGE=1
- os: linux
compiler: gcc
addons:
apt:
sources: *all_sources
packages: ['valgrind', 'lcov', 'g++-7']
env: COMPILER='g++-7' CPP14=1 VALGRIND=1
- os: osx
osx_image: xcode9.1
compiler: clang
env: COMPILER='clang++' CPP14=1 EXAMPLES=1 COVERAGE=1
install: install:
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
@ -204,7 +230,7 @@ before_script:
- | - |
# Use Debug builds for running Valgrind and building examples # Use Debug builds for running Valgrind and building examples
cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DUSE_CPP14=${CPP14} -DCATCH_USE_VALGRIND=${VALGRIND} -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_COVERAGE=ON cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DUSE_CPP14=${CPP14} -DCATCH_USE_VALGRIND=${VALGRIND} -DCATCH_BUILD_EXAMPLES=${EXAMPLES} -DCATCH_ENABLE_COVERAGE=${COVERAGE}
# Don't bother with release build for coverage build # Don't bother with release build for coverage build
cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DUSE_CPP14=${CPP14} cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DUSE_CPP14=${CPP14}
@ -215,7 +241,9 @@ script:
make -j 2 make -j 2
CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2 CTEST_OUTPUT_ON_FAILURE=1 ctest -j 2
# Coverage collection does not work for OS X atm # Coverage collection does not work for OS X atm
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then echo "${TRAVIS_OS_NAME}";
echo "${COVERAGE}";
if [[ "${TRAVIS_OS_NAME}" == "linux" ]] && [[ "${COVERAGE}" == "1" ]]; then
make gcov make gcov
make lcov make lcov
bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports" bash <(curl -s https://codecov.io/bash) -X gcov || echo "Codecov did not collect coverage reports"