#
#    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

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=