I use Travis-CI for continuous integration for my simple Qt app. My .travis.yml file looks like this (based on this gist):
language: cpp
before_install:
  - sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa
  - sudo apt-get update -qq
  - sudo apt-get install -qq g++ qt4-qmake libqt4-dev qt5-qmake qtbase5-dev
script: 
  - qmake -qt=qt4 -v
  - qmake -qt=qt4
  - make
  - make -k check
  - make clean
  - qmake -qt=qt5 -v
  - qmake -qt=qt5
  - make
  - make -k check
This configuration allows me to build my app (and run tests) with default Qt libraries in Ubuntu (Qt 4.8.1 and Qt 5.0.2).
Is there any way to build app with other Qt versions (4.7.x, 4.8.x, 5.1.x and so on)?
Inspired by AlexandreP answer and .travis.yml file of Twofold-Qt project with many thanks to Stephan Binner.
language: cpp
matrix:
 include:
  - os: linux
    dist: trusty
    sudo: required
    compiler: gcc
    env:
     - QT_BASE=48
  - os: linux
    dist: trusty
    sudo: required
    compiler: gcc
    env:
     - QT_BASE=51
  - os: linux
    dist: trusty
    sudo: required
    compiler: gcc
    env:
     - QT_BASE=52
  - os: linux
    dist: trusty
    sudo: required
    compiler: gcc
    env:
     - QT_BASE=53
  - os: linux
    dist: trusty
    sudo: required
    compiler: gcc
    env:
     - QT_BASE=54
  - os: linux
    dist: trusty
    sudo: required
    compiler: gcc
    env:
     - QT_BASE=55
  - os: osx
    compiler: clang
    env:
     - QT_BASE=55
  - os: linux
    dist: trusty
    sudo: required
    compiler: gcc
    env:
     - QT_BASE=56
  - os: linux
    dist: trusty
    sudo: required
    compiler: gcc
    env:
     - QT_BASE=57
  - os: osx
    compiler: clang
    env:
     - QT_BASE=57
before_install:
  - if [ "$QT_BASE" = "48" ]; then sudo add-apt-repository ppa:beineri/opt-qt487-trusty -y; fi
  - if [ "$QT_BASE" = "51" ]; then sudo add-apt-repository ppa:beineri/opt-qt511-trusty -y; fi
  - if [ "$QT_BASE" = "52" ]; then sudo add-apt-repository ppa:beineri/opt-qt521-trusty -y; fi
  - if [ "$QT_BASE" = "53" ]; then sudo add-apt-repository ppa:beineri/opt-qt532-trusty -y; fi
  - if [ "$QT_BASE" = "54" ]; then sudo add-apt-repository ppa:beineri/opt-qt542-trusty -y; fi
  - if [[ "$QT_BASE" = "55" && "$TRAVIS_OS_NAME" = "linux" ]]; then sudo add-apt-repository ppa:beineri/opt-qt551-trusty -y; fi
  - if [ "$QT_BASE" = "56" ]; then sudo add-apt-repository ppa:beineri/opt-qt562-trusty -y; fi
  - if [[ "$QT_BASE" = "57" && "$TRAVIS_OS_NAME" = "linux" ]]; then sudo add-apt-repository ppa:beineri/opt-qt571-trusty -y; fi
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then 
      sudo apt-get update -qq;
    else
      brew update;
    fi
install:
  - if [ "$QT_BASE" = "48" ]; then sudo apt-get install -qq opt-qt4-qmake opt-qt4-dev-tools; source /opt/qt-4.8/bin/qt-4.8-env.sh; fi
  - if [ "$QT_BASE" = "51" ]; then sudo apt-get install -qq qt51base; source /opt/qt51/bin/qt51-env.sh; fi
  - if [ "$QT_BASE" = "52" ]; then sudo apt-get install -qq qt52base; source /opt/qt52/bin/qt52-env.sh; fi
  - if [ "$QT_BASE" = "53" ]; then sudo apt-get install -qq qt53base; source /opt/qt53/bin/qt53-env.sh; fi
  - if [ "$QT_BASE" = "54" ]; then sudo apt-get install -qq qt54base; source /opt/qt54/bin/qt54-env.sh; fi
  - if [ "$QT_BASE" = "55" ]; then
      if [ "$TRAVIS_OS_NAME" = "linux" ]; then 
        sudo apt-get install -qq qt55base; source /opt/qt55/bin/qt55-env.sh; 
      else
        brew install qt55;
        brew link --force qt55;
      fi
    fi
  - if [ "$QT_BASE" = "56" ]; then sudo apt-get install -qq qt56base; source /opt/qt56/bin/qt56-env.sh; fi
  - if [ "$QT_BASE" = "57" ]; then
      if [ "$TRAVIS_OS_NAME" = "linux" ]; then 
        sudo apt-get install -qq qt57base; source /opt/qt57/bin/qt57-env.sh; 
      else
        brew install qt5;
        brew link --force qt5;
      fi
    fi
script:
  - qmake -v
  - qmake -r
  - make
notifications:
  email: false
With this .travis.yml you will get 10 separate build jobs - number of elements in matrix section. Each build job will install specified Qt version and use it for app building in Ubuntu with Qt 4.8 - 5.7 and OS X with Qt 5.5 and 5.7 (or latest version).
If you want to build your app for Windows, you can try AppVeyor CI service. Example config (Qt 5.3 - 5.7):
version: '{build}'
init:
- git config --global core.autocrlf input
environment:
  matrix:
  - QT5: C:\Qt\5.3\mingw482_32
    MINGW: C:\Qt\Tools\mingw482_32
  - QT5: C:\Qt\5.4\mingw491_32
    MINGW: C:\Qt\Tools\mingw491_32
  - QT5: C:\Qt\5.5\mingw492_32
    MINGW: C:\Qt\Tools\mingw492_32
  - QT5: C:\Qt\5.6\mingw49_32
    MINGW: C:\Qt\Tools\mingw492_32
  - QT5: C:\Qt\5.7\mingw53_32
    MINGW: C:\Qt\Tools\mingw530_32
matrix:
  fast_finish: true
before_build:
- set PATH=%MINGW%\bin;%QT5%\bin;%PATH%
build_script:
- qmake -v
- qmake -r
- mingw32-make
I use these configs in my project - qtcsv. See it for updates and build logs.
You can find more version of Qt by adding this beineri's ppa. For example, version 5.4 can be added:
before_install:
  - sudo add-apt-repository ppa:beineri/opt-qt541 -y
install:
  - sudo apt-get install qt54base qt54websockets
script:
  - source /opt/qt54/bin/qt54-env.sh
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With