#
#    Copyright 2018-2019 Google LLC. All Rights Reserved.
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#

#
#    Description:
#      This file is the Travis CI hosted, distributed continuous 
#      integration configuration file for the OpenWeave Core library.
#

language: generic

sudo: required

before_install:
  - .travis/before_install.sh

before_script:
  - ./bootstrap

script:
  - .travis/script.sh

after_success:
  - bash <(curl -s https://codecov.io/bash)

after_failure:
  - .travis/after_failure.sh

matrix:
  include:
    - name: "Linux with Defaults against GCC Distribution Sanity Check"
      env: BUILD_TARGET="linux-auto-gcc-distcheck" CC="gcc"
      os: linux
      compiler: gcc
    - name: "Linux with Defaults against GCC Coding Style Check"
      env: BUILD_TARGET="linux-auto-gcc-lint" CC="gcc"
      os: linux
      compiler: gcc
    - name: "Linux with Defaults against clang/LLVM"
      env: BUILD_TARGET="linux-auto-clang" CC="clang"
      os: linux
      compiler: clang
    - name: "Linux with LWIP against clang/LLVM"
      env: BUILD_TARGET="linux-lwip-clang" CC="clang"
      os: linux
      compiler: clang
    - name: "OS X with Defaults against clang/LLVM"
      env: BUILD_TARGET="osx-auto-clang" CC="clang"
      os: osx
      compiler: clang
    - name: "OS X with LwIP against clang/LLVM"
      env: BUILD_TARGET="osx-lwip-clang" CC="clang"
      os: osx
      compiler: clang
    - name: "ESP32 (openweave-esp32-demo)"
      env: BUILD_TARGET="esp32"
    - name: "Linux with Defaults against GCC Functional and Unit Tests"
      env: BUILD_TARGET="linux-auto-gcc-check" CC="gcc"
      os: linux
      compiler: gcc
    - name: "Linux with LwIP against GCC Functional and Unit Tests"
      env: BUILD_TARGET="linux-lwip-gcc-check" CC="gcc"
      os: linux
      compiler: gcc
    - name: "Linux with Defaults against GCC Network and Service Tests"
      os: linux
      compiler: gcc
      env: BUILD_TARGET="linux-auto-gcc-check-happy" TRAVIS_TAG="true"
    - name: "Linux with LwIP against GCC Network and Service Tests"
      os: linux
      compiler: gcc
      env: BUILD_TARGET="linux-lwip-gcc-check-happy" TRAVIS_TAG="true"

#
#   deploy description:
#      Travis CI supports uploading to Google Cloud Storage (GCS).
#      openweave gcs bucket location: happy-test-log/<build_number> under link: https://storage.cloud.google.com/openweave"
#      tags: true: deployment is triggered if and only if $TRAVIS_TAG is set here.
#      Travis-CI help link: https://docs.travis-ci.com/user/deployment/gcs/
#

deploy:
  provider: gcs
  access_key_id: GOOGNPZYTVTEPZM5VBRAVVUU
  secret_access_key:
    secure: HH/3FOuU8M4AG9Gdwjs52yw2L1JnAvupcLbFurJtrfqfspXYj/1JKTbGjbmVcb6jS/mK9pNPCs2q/L111JeufWa5cR8RAw49CZ9ENqUHs0t7FV0vgk2h7O+QrQVDCQqN9XvgTGpe071IFJOPCpASRYTT1NT6wqEFyPyCl6b+eU8RLXkRwSQrd2heAdKlD/sHBda3AA9OE8AnKRdY5ZKLhtAt2xl9z4w6vWi1MTbmoRVZaCZaAjmtM5OmRAbqTz4kO41Zy57u1350uEiuOV6l/1QVpfd8zk3iYMC4T5OGrDVzk53WejnHa+Ne1nanswW6HBnsrunBcJV3KWSx2O3mdKBsBunJ4t+gjYAtYaPdMIqqvswXXN95d6VOayTvFBJfmcPLNz4h4ypDf9wYBrSdCpnHWTJh8lmgC2vd8k2tvy/67OgVlYUUX5X+cOkLZI4cfVwOrx2wFIYvxcbsh1LyUQ/EE97QOuftcgnI654u/VLJXuPK9lTj3tEDlH27Hz7h8aJ/dpsOTTCC4t0AqAiXaU7S4HO7B3WnQf4ObVzUCcIQLeqHAlzg+BcOCgy+Jvrqrq4A1PB10YAdwIWjBtIZ2fEuuCCFNCcE9rMp5ddnc3sVVX+NEfDm+O9HeNRvg2VRTWq4Bm5sBSjzJ+SDP5bK9BQrSoXwiqDRM+AGheB1B1w=
  bucket: openweave
  skip_cleanup: true
  acl: public-read
  upload-dir: happy-test-log/$TRAVIS_BUILD_NUMBER
  local-dir: "$TRAVIS_BUILD_DIR/happy-test-logs"
  on:
    repo: openweave/openweave-core
    tags: true
env:
  global:
    secure: PJdNS8L51Y+Op8xc2C9U13Y6eQUAszDEKigB0jn9LsXB8BZwJsu3mjmtLTQBU99nqAhsCKiN85kxry6APi/xjcDJ3/iRP8IpP8KJ/VV68CChdu1X/2iatSS/EOAT4ZBoo3sUCmP98w4k5G6HiVCpnNprhZOg8xsD9bflVkX9Au67hcwfHfKWyX1c/kbYYyegSWd+7GgkNZRGAws1yuwL1MwGppDqKQJ1bOciALaA1LMzzl1wvrle6t+CWvLH51YoIgndFsTJaphGqXp/hveCIsXEGKY5ZN8RkfuSvs9JupsfoXjA9Nxg2WfLC5c4MeyJV9yvzF9zZNglra9+PTlHFMxnuSvyIKRiHb9rwXMwgtb8Tqwhe0Cikj77gHdRUfZjUNBS34nNRqACSFjSFDM9N862z17BqfMZu0A0znquM24vfm+JV1i7OZ8USdbbmBqtL5qJgimQv2/Y/j3H/o6IrqOLEhuzOXQynclf6xi6AdXlcJ1QmTTicU5JbETJuzkvOYsnUs7TBV0FaPf+j98LEHTXZUPlDtQz4sIu757SiYUuR6Jm357yOwyv+x/PMk250g2op0TtMksjR3HQahnz8HJPYLenOxogYqarqY6E4TNm2P+bRDCPgxQ+dTSvlrcH8qhl+PHImn38q38ghm98WUvqdwxAApI3cZdy4Ja/3WA=
