diff options
author | Julian Andres Klode <jak@debian.org> | 2017-06-30 15:40:40 +0200 |
---|---|---|
committer | Julian Andres Klode <jak@debian.org> | 2017-06-30 16:02:17 +0200 |
commit | 46c31341ef4b09bb3509ebbc49416e34b68e1be4 (patch) | |
tree | ed81b16f117ce08e11441d4e0575b53210b5de7e | |
parent | 535c06a759dc13c8e2858735973cac24ceaa36fa (diff) |
travis: Switch to Docker
This runs parallel builds on docker, based on debian:testing
docker images, with ccache enabled and parallel running of the
test suite (ccache supports coverage builds these days, and
parallel testing just needs unbuffer to handle the stty stuff)
This is a huge step up from building on a mix of trusty, wily,
and xenial. Most importantly, coverage now correctly detects
partial covered lines instead of just reporting almost all of
them as fully covered.
We use ftp.de.debian.org as deb.debian.org backed by Amazon
503s too often.
Gbp-Dch: ignore
-rw-r--r-- | .travis.yml | 39 | ||||
-rw-r--r-- | Dockerfile | 10 |
2 files changed, 23 insertions, 26 deletions
diff --git a/.travis.yml b/.travis.yml index 8aa8dceb6..b3c4fb806 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,34 +1,21 @@ language: cpp cache: ccache sudo: required -dist: trusty +services: + - docker env: - - TEST_SUITE=user CMAKE_FLAGS= - - TEST_SUITE=user CMAKE_FLAGS="-DWITH_DOC=OFF -DWITH_CURL=OFF" - - TEST_SUITE=root CMAKE_FLAGS=-DWITH_DOC=OFF -before_install: - - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ wily main universe' -y - - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ xenial main' -y - - | - sudo sh -c '/bin/echo -e "Package: *\nPin: release n=wily\nPin-Priority: 1" > /etc/apt/preferences.d/wily' - sudo sh -c '/bin/echo -e "Package: *\nPin: release n=xenial\nPin-Priority: 1" > /etc/apt/preferences.d/xenial' - - sudo apt-get update -qq + - USER=travis CMAKE_FLAGS= + - USER=travis CMAKE_FLAGS="-DWITH_DOC=OFF -DWITH_CURL=OFF" + - USER=root CMAKE_FLAGS=-DWITH_DOC=OFF install: - - sudo apt-get -qq -y -t wily install gettext liblz4-dev python3-apt - - sudo apt-get -qq -y -t xenial install cmake ninja-build libgnutls28-dev libcurl4-gnutls-dev - - sudo ./prepare-release travis-ci + - sed -i -e "s#1000#$(id -u)#g" Dockerfile + - docker build --tag=apt-ci . before_script: - - ( mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Coverage -G Ninja $CMAKE_FLAGS .. ) - - ninja -C build + - docker run --rm -w $PWD -v $HOME/.ccache:$HOME/.ccache -v $PWD:$PWD --user=travis apt-ci sh -e -c "mkdir build && cd build && env PATH=/usr/lib/ccache:\$PATH cmake -DCMAKE_BUILD_TYPE=Coverage -G Ninja $CMAKE_FLAGS .." + - docker run --rm -w $PWD -v $HOME/.ccache:$HOME/.ccache -v $PWD:$PWD --user=travis apt-ci ninja -C build script: - - CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test - - DESTDIR=$PWD/rootdir chronic ninja -C build install - - test "$TEST_SUITE" != "user" || ./test/integration/run-tests -qq - - sudo adduser --force-badname --system --home /nonexistent --no-create-home --quiet _apt || true - - sudo chmod go+x /home/travis - - sudo chmod -R go+rwX /home/travis/build - - test "$TEST_SUITE" != "root" || sudo ./test/integration/run-tests -qq + - docker run --rm -w $PWD -v $PWD:$PWD --user=travis apt-ci env CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test + - docker run --rm -w $PWD -v $PWD:$PWD --user=travis apt-ci env DESTDIR=$PWD/rootdir chronic ninja -C build install + - docker run --rm -w $PWD -v $PWD:$PWD --user=$USER apt-ci unbuffer ./test/integration/run-tests -qq -j 4 after_script: - - cd build - - gcov -r $(find -name '*.gcno') - - bash <(curl -s https://codecov.io/bash) + - docker run --rm -w $PWD/build -v $PWD:$PWD --user=$USER `bash <(curl -s https://codecov.io/env)` apt-ci bash -c 'bash <(curl -s https://codecov.io/bash)' diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..be7c36e49 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM debian:testing +COPY . /tmp +WORKDIR /tmp +RUN sed -i s#deb.debian.org#ftp.de.debian.org# /etc/apt/sources.list \ + && apt-get update \ + && adduser --home /home/travis travis --quiet --disabled-login --gecos "" --uid 1000 \ + && env DEBIAN_FRONTEND=noninteractive apt-get install build-essential ccache ninja-build expect curl git -q -y \ + && env DEBIAN_FRONTEND=noninteractive ./prepare-release travis-ci \ + && dpkg-reconfigure ccache \ + && rm -r /tmp/* |