X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=.travis.yml;h=f0bf2f08144665e42c27fc10e94b9ab879c8af85;hb=840a6cd28c7757d1db15ead1bff7551be836bfd7;hp=b9640d9dfd029500f57e198662c312446f1b9d16;hpb=0962630edd9f47eecb5357225b2fdd3fa4f0661c;p=quassel.git diff --git a/.travis.yml b/.travis.yml index b9640d9d..f0bf2f08 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,79 @@ -language: cpp -compiler: - - gcc - - clang -# Change this to your needs -script: mkdir build && cd build && cmake ../ && make +sudo: required + +services: + - docker + +# Define build matrix for Linux +os: linux +language: generic # No host compilation + +env: + - DIST=xenial CXX=gcc CMAKE_OPTIONS="-DWITH_KDE=OFF -DWITH_WEBKIT=ON" + - DIST=xenial CXX=gcc CMAKE_OPTIONS="-DWITH_KDE=ON -DWITH_WEBKIT=ON" + - DIST=xenial CXX=clang CMAKE_OPTIONS="-DWITH_KDE=OFF -DWITH_WEBKIT=ON" + - DIST=xenial CXX=clang CMAKE_OPTIONS="-DWITH_KDE=ON -DWITH_WEBKIT=ON" + +# Set up cache +cache: + directories: + - $TRAVIS_BUILD_DIR/ccache + +# Prepare +before_install: + - docker pull quassel/quassel-build-env:$DIST + - docker images + - mkdir build + +# Build inside the docker image +# Source, build and ccache directories are bind-mounted into the container +script: + - | + docker run -t -w /build --rm \ + -v "$(readlink -f .):/src" \ + -v "$(readlink -f build):/build" \ + -v "$(readlink -f ccache):/ccache" \ + -e CCACHE_DIR=/ccache \ + -e CC=$CXX -e CXX=$CXX \ + quassel/quassel-build-env:$DIST \ + sh -c "cmake -GNinja /src $CMAKE_OPTIONS \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + && ninja \ + && ccache -s \ + " + +# Define a separate job for OSX +jobs: + include: + - os: osx + language: cpp + compiler: clang + env: + cache: + ccache: true + directories: + - $HOME/Library/Caches/Homebrew + before_install: + - brew update && brew install ccache ninja qca qt5 + script: + - mkdir build && cd build + - | + PATH=$PATH:/usr/local/opt/qt5/bin + DEPLOY=OFF + if [[ "$TRAVIS_TAG" != "" && "$GH_TOKEN" != "" ]]; then + DEPLOY=ON + fi + cmake -G"Ninja" .. -DCMAKE_BUILD_TYPE=Release -DUSE_CCACHE=OFF -DDEPLOY=$DEPLOY + ninja install + - ccache -s + deploy: + provider: releases + api_key: "${GH_TOKEN}" + file_glob: true + file: + - "QuasselClient_MacOSX-x86_64_*.dmg" + - "QuasselCore_MacOSX-x86_64_*.dmg" + - "QuasselMono_MacOSX-x86_64_*.dmg" + skip_cleanup: true + on: + tags: true + condition: "$GH_TOKEN != ''"