travis: Add Ubuntu 18.10 "Cosmic" to the list of CI distros
[quassel.git] / .travis.yml
1 sudo: required
2
3 services:
4   - docker
5
6 # Define build matrix for Linux
7 os: linux
8 language: generic  # No host compilation
9
10 env:
11   - DIST=xenial CXX=g++     CMAKE_OPTIONS="-DWITH_KDE=OFF -DWITH_WEBKIT=OFF"
12   - DIST=xenial CXX=clang++ CMAKE_OPTIONS="-DWITH_KDE=OFF -DWITH_WEBKIT=OFF"
13   - DIST=xenial CXX=g++     CMAKE_OPTIONS="-DWITH_KDE=ON  -DWITH_WEBKIT=ON"
14   - DIST=xenial CXX=clang++ CMAKE_OPTIONS="-DWITH_KDE=ON  -DWITH_WEBKIT=ON"
15   - DIST=bionic CXX=g++     CMAKE_OPTIONS="-DWITH_KDE=ON  -DWITH_WEBKIT=ON"
16   - DIST=bionic CXX=clang++ CMAKE_OPTIONS="-DWITH_KDE=ON  -DWITH_WEBENGINE=ON"
17   - DIST=cosmic CXX=g++     CMAKE_OPTIONS="-DWITH_KDE=ON  -DWITH_WEBENGINE=ON"
18   - DIST=cosmic CXX=clang++ CMAKE_OPTIONS="-DWITH_KDE=ON  -DWITH_WEBENGINE=ON"
19
20 # Set up cache
21 cache:
22   directories:
23     - $TRAVIS_BUILD_DIR/ccache
24
25 # Prepare
26 before_install:
27   - docker pull quassel/quassel-build-env:$DIST
28   - docker images
29   - mkdir build
30
31 # Build inside the docker image
32 # Source, build and ccache directories are bind-mounted into the container
33 script:
34   - |
35     docker run -t -w /build --rm \
36                -v "$(readlink -f .):/src" \
37                -v "$(readlink -f build):/build" \
38                -v "$(readlink -f ccache):/ccache" \
39                -e CCACHE_DIR=/ccache \
40                -e CCACHE_MAXSIZE=1G \
41                -e CXX=$CXX \
42                quassel/quassel-build-env:$DIST \
43                sh -c "cmake /src $CMAKE_OPTIONS \
44                             -GNinja \
45                             -DCMAKE_BUILD_TYPE=RelWithDebInfo \
46                             -DBUILD_TESTING=ON \
47                       && ninja install \
48                       && ccache -s \
49                       && ctest -VV \
50                      "
51
52 # Define a separate job for OSX
53 jobs:
54   include:
55     - os: osx
56       language: cpp
57       compiler: clang
58       env:
59       cache:
60         directories:
61           - $HOME/.ccache
62           - $HOME/Library/Caches/Homebrew
63       before_install:
64         - brew update && brew install ccache ninja qca qt5
65       script:
66         - export CCACHE_MAXSIZE=1G
67         - mkdir build && cd build
68         - |
69           PATH=$PATH:/usr/local/opt/qt5/bin
70           DEPLOY=OFF
71           if [[ "$TRAVIS_TAG" != "" && "$GH_TOKEN" != "" ]]; then
72             DEPLOY=ON
73           fi
74           cmake -GNinja .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -DDEPLOY=$DEPLOY
75           ninja install
76         - ccache -s
77         - ctest -VV
78       deploy:
79         provider: releases
80         api_key: "${GH_TOKEN}"
81         file_glob: true
82         file:
83           - "QuasselClient_MacOSX-x86_64_*.dmg"
84           - "QuasselCore_MacOSX-x86_64_*.dmg"
85           - "QuasselMono_MacOSX-x86_64_*.dmg"
86         skip_cleanup: true
87         on:
88           tags: true
89           condition: "$GH_TOKEN != ''"