.travis.yml 8.84 KB
Newer Older
Daniel Agar's avatar
Daniel Agar committed
1 2 3
language: cpp

git:
4
  depth: 500
Daniel Agar's avatar
Daniel Agar committed
5

Daniel Agar's avatar
Daniel Agar committed
6 7 8 9 10
env:
  global:
    # ANDROID_STOREPASS
    secure: RGovyUnMw3fp/bHZi058JvANT1rYmNqrsuSYew0cIgirO6YbMHr/rsjwCm1FTYpBl8s1zgr+u2b8ftYnfnCz2YT+Aip4NWrVYpVU0FEmfytGILrnUS0pjlt8m7fU9AKR1ElOSll7yw7e1kftynN39Q321etvwbLZcXon6zz0suE=

11
matrix:
12
    fast_finish: true
13 14
    include:
        - os: linux
15
          env: SPEC=linux-g++-64 CONFIG=debug SHADOW_BUILD_DIR=/tmp/build_linux_debug
Daniel Agar's avatar
Daniel Agar committed
16 17
          sudo: required
          dist: trusty
18
        - os: linux
19
          env: SPEC=linux-g++-64 CONFIG=installer SHADOW_BUILD_DIR=/tmp/build_linux_install
Daniel Agar's avatar
Daniel Agar committed
20 21
          sudo: required 
          dist: trusty
22
        - os: osx
Don Gagne's avatar
Don Gagne committed
23
          osx_image: xcode7
24
          env: SPEC=macx-clang CONFIG=debug QT_FATAL_WARNINGS=1 SHADOW_BUILD_DIR=/tmp/build_macos_debug
25
        - os: osx
Don Gagne's avatar
Don Gagne committed
26
          osx_image: xcode7
27
          env: SPEC=macx-clang CONFIG=installer SHADOW_BUILD_DIR=/tmp/build_macos_install
Don Gagne's avatar
Don Gagne committed
28 29 30
        - os: osx
          osx_image: xcode7
          env: SPEC=ios SHADOW_BUILD_DIR=/tmp/build_ios
31 32
#        - os: android
#          language: android
33
#          env: SPEC=android-g++ CONFIG=debug SHADOW_BUILD_DIR=/tmp/build_android_debug
34
#          sudo: false
Daniel Agar's avatar
Daniel Agar committed
35 36
        - os: android
          language: android
37
          env: SPEC=android-g++ CONFIG=installer SHADOW_BUILD_DIR=/tmp/build_android_install
Daniel Agar's avatar
Daniel Agar committed
38
          sudo: false
39 40 41
        - os: linux
          env: CONFIG=doxygen
          sudo: false
Daniel Agar's avatar
Daniel Agar committed
42 43 44 45 46 47

android:
  components:
    - platform-tools
    - build-tools-21.1.1
    - android-21
Daniel Agar's avatar
Daniel Agar committed
48

49 50 51 52 53 54
addons:
  apt:
    sources:
    - ubuntu-toolchain-r-test
    packages:
    - ccache
55
    - doxygen
56 57 58
    - espeak
    - g++-4.8
    - gcc-4.8
59
    - graphviz
60 61 62 63 64
    - libc6-i386
    - libespeak-dev
    - libopenscenegraph-dev
    - libsdl1.2-dev
    - libudev-dev
65
    - texlive-font-utils
66

Daniel Agar's avatar
Daniel Agar committed
67
cache:
68 69 70
  directories:
    - $HOME/.ccache

Daniel Agar's avatar
Daniel Agar committed
71 72

before_install:
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
  - cd ${TRAVIS_BUILD_DIR} && git fetch --unshallow
  - git fetch --all --tags
  - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then
        mkdir -p ~/.config/QtProject/ &&
        cp ${TRAVIS_BUILD_DIR}/test/qtlogging.ini ~/.config/QtProject/
        ;
    fi
  - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then
        mkdir -p ~/Library/Preferences/QtProject/ &&
        cp ${TRAVIS_BUILD_DIR}/test/qtlogging.ini ~/Library/Preferences/QtProject/
        ;
    fi
  - if [ "${TRAVIS_OS_NAME}" = "android" ]; then
        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-android-armv7-1.5.2.tar.bz2 &&
        mkdir -p ${TRAVIS_BUILD_DIR}/gstreamer-1.0-android-armv7-1.5.2 &&
        tar jxf gstreamer-1.0-android-armv7-1.5.2.tar.bz2 -C ${TRAVIS_BUILD_DIR}/gstreamer-1.0-android-armv7-1.5.2
        ;
    fi
Daniel Agar's avatar
Daniel Agar committed
91 92

install:
93
  - if [[ "${TRAVIS_OS_NAME}" = "linux" && "${CONFIG}" != "doxygen" ]]; then
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.5.1-linux.tar.bz2 &&
        tar jxf Qt5.5.1-linux.tar.bz2 -C /tmp &&
        export PATH=/tmp/Qt/5.5/gcc_64/bin:$PATH &&
        export CXX="g++-4.8" &&
        export CC="gcc-4.8" &&
        export DISPLAY=:99.0 &&
        sh -e /etc/init.d/xvfb start
        ;
    fi
  - if [[ "${TRAVIS_OS_NAME}" = "osx" && "${SPEC}" != "ios" ]]; then
        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.5.1-mac-clang.tar.bz2 &&
        tar jxf Qt5.5.1-mac-clang.tar.bz2 -C /tmp &&
        export QT_DIR=Qt5.5-mac-clang/5.5/clang_64 &&
        export PATH=/tmp/$QT_DIR/bin:$PATH &&
        export QT_QPA_PLATFORM_PLUGIN_PATH=/tmp/$QT_DIR/plugins &&
        export QML2_IMPORT_PATH=/tmp/$QT_DIR/qml
        ;
    fi
  - if [[ "${TRAVIS_OS_NAME}" = "osx" && "${SPEC}" = "ios" ]]; then
        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.5.1-ios.tar.bz2 &&
        tar jxf Qt5.5.1-ios.tar.bz2 -C /tmp &&
        export PATH=/tmp/ios/bin:$PATH
        ;
    fi
  - if [ "${TRAVIS_OS_NAME}" = "android" ]; then
        wget http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin &&
        chmod +x android-ndk-r10e-linux-x86_64.bin &&
        ./android-ndk-r10e-linux-x86_64.bin > /dev/null &&
        export PATH=`pwd`/android-ndk-r10e:$PATH &&
        export ANDROID_NDK_ROOT=`pwd`/android-ndk-r10e &&
        export ANDROID_SDK_ROOT=/usr/local/android-sdk &&
        wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.5.1-linux.tar.bz2 &&
        tar jxf Qt5.5.1-linux.tar.bz2 -C /tmp &&
        export PATH=/tmp/Qt/5.5/android_armv7/bin:$PATH
        ;
Daniel Agar's avatar
Daniel Agar committed
129 130
    fi

131

132
before_script:
133 134 135 136 137 138 139
# setup ccache
  - mkdir -p ~/bin
  - ln -s /usr/bin/ccache ~/bin/g++
  - ln -s /usr/bin/ccache ~/bin/g++-4.8
  - ln -s /usr/bin/ccache ~/bin/gcc
  - ln -s /usr/bin/ccache ~/bin/gcc-4.8
  - export PATH=~/bin:$PATH
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
  - if [[ "${TRAVIS_OS_NAME}" = "android" && "${CONFIG}" = "installer" && -z ${ANDROID_STOREPASS} ]]; then
        export CONFIG=release
        ;
    fi
  - if [[ "${CONFIG}" != "doxygen" && "${SPEC}" != "ios" ]]; then
        mkdir ${SHADOW_BUILD_DIR} &&
        cd ${SHADOW_BUILD_DIR} &&
        qmake -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=${CONFIG} CONFIG+=WarningsAsErrorsOn -spec ${SPEC}
        ;
        fi
  - if [ "${SPEC}" = "ios" ]; then
        mkdir ${SHADOW_BUILD_DIR} &&
        cd ${SHADOW_BUILD_DIR} &&
        qmake -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=WarningsAsErrorsOn CONFIG-=debug_and_release CONFIG+=release
        ;
    fi
156

Daniel Agar's avatar
Daniel Agar committed
157
script:
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
  - if [ "${TRAVIS_OS_NAME}" = "android" ]; then
        cd ${TRAVIS_BUILD_DIR} &&
        ./tools/update_android_version.sh
        ;
    fi
  - echo 'Building QGroundControl'
  - echo -en 'travis_fold:start:script.1\\r'
  - if [[ "${CONFIG}" != "doxygen" && "${SPEC}" != "ios" ]]; then
        cd ${SHADOW_BUILD_DIR} &&
        make -j4 | sed 's/${TRAVIS_BUILD_DIR}/-/'
        ;
    fi
  - if [ "${SPEC}" = "ios" ]; then
        cd ${SHADOW_BUILD_DIR} &&
        xcodebuild -configuration Release CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
        ;
    fi
  - if [ "${CONFIG}" = "doxygen" ]; then
        cd ${TRAVIS_BUILD_DIR}/src &&
        doxygen documentation.dox
        ;
    fi
180
  - echo -en 'travis_fold:end:script.1\\r'
181 182 183 184 185 186 187 188
  - if [[ "${TRAVIS_OS_NAME}" = "linux" && "${CONFIG}" = "debug" ]]; then
        ${SHADOW_BUILD_DIR}/debug/qgroundcontrol --unittest
        ;
        fi
  - if [[ "${TRAVIS_OS_NAME}" = "osx" && "${CONFIG}" = "debug" ]]; then
        ${SHADOW_BUILD_DIR}/debug/qgroundcontrol.app/Contents/MacOS/qgroundcontrol --unittest
        ;
    fi
Daniel Agar's avatar
Daniel Agar committed
189

190
after_success:
191 192 193 194 195
  - if [ "${TRAVIS_TAG}" ]; then
        export GOOGLE_PLAY_TRACK=production;
    else
        export GOOGLE_PLAY_TRACK=beta;
    fi
196
  - if [[ "${TRAVIS_OS_NAME}" = "android" && "${TRAVIS_PULL_REQUEST}" = "false" && "${TRAVIS_BRANCH}" = "master" ]]; then
197 198 199 200 201
        pip install --user google-api-python-client PyOpenSSL &&
        cd ${TRAVIS_BUILD_DIR} &&
        openssl aes-256-cbc -K $encrypted_25db6eb7c3fd_key -iv $encrypted_25db6eb7c3fd_iv -in ${TRAVIS_BUILD_DIR}/android/Google_Play_Android_Developer-4432a3c4f5d1.json.enc -out android/Google_Play_Android_Developer-4432a3c4f5d1.json -d &&
        ${TRAVIS_BUILD_DIR}/tools/google_play_upload.py ${GOOGLE_PLAY_TRACK} org.mavlink.qgroundcontrol ${SHADOW_BUILD_DIR}/release/package/qgroundcontrol.apk
        ;
202
    fi
203

204 205 206
before_deploy:
  - rvm 1.9.3 do gem install mime-types -v 2.6.2

Daniel Agar's avatar
Daniel Agar committed
207
deploy:
Daniel Agar's avatar
Daniel Agar committed
208 209 210 211 212
  - provider: s3
    access_key_id: AKIAIVORNALE7NHD3T6Q
    secret_access_key:
      secure: BsLXeXUPsCJdX4tawrDnO8OFK5Hk4kzlDTiyH93En6TbjUargVAWDMcHVj7TUhr7+3Tao1W1zb0G4SJe9kHv+jrky0yE72KvoG3YAON0VXWKizxBAKkgHE2RxSTNAwDeKbi2G6YJfNDescBBfX7zEohShdXglQu7CGaUQKRaiI4=
    bucket: qgroundcontrol
dogmaphobic's avatar
dogmaphobic committed
213
    local_dir: ${SHADOW_BUILD_DIR}/release/package
Daniel Agar's avatar
Daniel Agar committed
214 215
    upload-dir: ${TRAVIS_BRANCH}
    acl: public_read
216
    region: us-west-2
Daniel Agar's avatar
Daniel Agar committed
217 218 219 220 221 222 223
    skip_cleanup: true
    on:
      all_branches: true
      condition: $CONFIG = installer
  - provider: releases
    api-key:
      secure: K/Zqr/FCC7QvzFxYvBtCinPkacQq2ubJ2qm982+38Zf/KjibVOF1dEbVdrGZmII6Tg5DaQzNXGYkg5PvYmJgT9xRsqeQjeYIUYqYZpAt+HYWA38AVfMU8jip/1P1wmwqD469nzJOBBa8yfsMs6Ca7tBaNl/zTxCRGnAgEzqtkdQ=
224
    file_glob: true
Daniel Agar's avatar
Daniel Agar committed
225
    file:
226
      - ${SHADOW_BUILD_DIR}/release/package/qgroundcontrol.*
Daniel Agar's avatar
Daniel Agar committed
227 228 229 230
    skip_cleanup: true
    on:
      tags: true
      condition: $CONFIG = installer
231 232 233 234 235
  - provider: s3
    access_key_id: AKIAIVORNALE7NHD3T6Q
    secret_access_key:
      secure: BsLXeXUPsCJdX4tawrDnO8OFK5Hk4kzlDTiyH93En6TbjUargVAWDMcHVj7TUhr7+3Tao1W1zb0G4SJe9kHv+jrky0yE72KvoG3YAON0VXWKizxBAKkgHE2RxSTNAwDeKbi2G6YJfNDescBBfX7zEohShdXglQu7CGaUQKRaiI4=
    bucket: qgroundcontrol
236
    local_dir: ${TRAVIS_BUILD_DIR}/src/html
237 238
    upload-dir: doxygen
    acl: public_read
239
    region: us-west-2
240
    skip_cleanup: true
241 242
    branch: master
    on:
243
      tags: true
244
      condition: $CONFIG = doxygen
245 246 247 248 249 250 251 252 253

notifications:
  webhooks:
    urls:
      - https://webhooks.gitter.im/e/60b033428ae9dc715662
    on_success: change  # options: [always|never|change] default: always
    on_failure: always  # options: [always|never|change] default: always
    on_start: never     # options: [always|never|change] default: always