X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=.travis.yml;h=316377f2b1da0f2d28033f3bcbe35843fe391c36;hp=defbb623915089f906b92a04725aff7afe9a6615;hb=20745bd0cbae035b84913127dfec9e8433d1282d;hpb=bc715c756677bee7cdb7109cc656e3e5f526c988 diff --git a/.travis.yml b/.travis.yml index defbb623..316377f2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,29 +1,82 @@ -before_install: - - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test - - sudo add-apt-repository -y ppa:kalakris/cmake - - sudo apt-add-repository -y ppa:beineri/opt-qt521 - - sudo apt-get -qq update +sudo: required -install: - - sudo apt-get install -q gcc-4.7 g++-4.7 - - if [ "$CXX" = "clang" ]; then sudo apt-get install -q clang-3.4; fi - - sudo apt-get install -q cmake - - sudo apt-get install -q qt52base qt52webkit qt52tools qt52script - - if [ "$CXX" = "g++" ]; then export CXX="g++-4.7" CC="gcc-4.7"; fi +services: + - docker -language: cpp +# Define build matrix for Linux +os: linux +language: generic # No host compilation -compiler: - - gcc - - clang +env: + - DIST=xenial CXX=g++ CMAKE_OPTIONS="-DWITH_KDE=OFF -DWITH_WEBKIT=ON" + - DIST=xenial CXX=g++ 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" + - DIST=bionic CXX=clang++ CMAKE_OPTIONS="-DWITH_KDE=OFF -DWITH_WEBENGINE=ON" + - DIST=bionic CXX=clang++ CMAKE_OPTIONS="-DWITH_KDE=ON -DWITH_WEBENGINE=ON" -env: - - QT_VERSION=qt4 - - QT_VERSION=qt5 +# Set up cache +cache: + directories: + - $TRAVIS_BUILD_DIR/ccache -script: +# Prepare +before_install: + - docker pull quassel/quassel-build-env:$DIST + - docker images - mkdir build - - cd build - - if [ "$QT_VERSION" = "qt4" ]; then cmake ..; fi - - if [ "$QT_VERSION" = "qt5" ]; then source /opt/qt52/bin/qt52-env.sh && cmake -DUSE_QT5=ON ..; fi - - make \ No newline at end of file + +# 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 CXX=$CXX \ + quassel/quassel-build-env:$DIST \ + sh -c "cmake /src $CMAKE_OPTIONS \ + -GNinja \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + && ninja install \ + && ccache -s \ + " + +# Define a separate job for OSX +jobs: + include: + - os: osx + language: cpp + compiler: clang + env: + cache: + directories: + - $HOME/.ccache + - $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 -GNinja .. -DCMAKE_BUILD_TYPE=Release -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 != ''"