From 28c8b7c6e60738fa2c46a3a6fc8fa33d74a87c36 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 4 Jul 2017 17:07:53 +0200 Subject: travis: Migrate to Docker This is based on master, just with one less variant, and stretch as the base image. Gbp-Dch: ignore --- .travis.yml | 37 ++++++++++++------------------------- Dockerfile | 11 +++++++++++ 2 files changed, 23 insertions(+), 25 deletions(-) create mode 100644 Dockerfile diff --git a/.travis.yml b/.travis.yml index 023107a68..7ef7b36c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,33 +1,20 @@ language: cpp cache: ccache sudo: required -dist: trusty +services: + - docker env: - - TEST_SUITE=user CMAKE_FLAGS= - - 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=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 - - 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 --tmpfs /tmp:suid,exec 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..b59a5dc6d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM debian:stretch +COPY . /tmp +WORKDIR /tmp +RUN sed -i s#://deb.debian.org#://cdn-fastly.deb.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/* \ + && apt-get clean -- cgit v1.2.3