#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#

sudo: required
group: deprecated-2017Q3
language: scala
services:
- docker

notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: "ZGbbsXqN4Vv0Vkz5USmtKa43X3/OpLtVm0ELME2vVTei09O41qhsF3Tm0MIm/EIKQkt/wdUXoF5GFImdzn9dXYevhapHBA3qOjzhyv0nMWMBYddb/b8kfGnRuhd1YpNMc1VMTj21CPE0zhlUe1NsfOW1KF901pKxaNg6pAHC8M7ngTI1vMJI2Y3B1gG2jgJBpbjxZsERo4FhFwmcYUZXNWFwqk7ERnwJPs5AxrLHb4d9+l20TgCQe+q/PKd7cyIGbeemxrDxjxijUV3tOFwN0aOrSjBOUDHUFiF7+UqzTUkjUtu3x0gOwS5dF8Dcg9sAGXZaal66bS1ckzNNnYvgGPO8NvnTll6Ootr/qC5pLw3+zh9TiXzrcQR7rIDeeei35SLyy1szWl67lGaVWXHSGXluCip+EbRixvTxK/Fyiztgq1S1SoNNvTX5J5wTSy2klEM7ZnCoT9iFMFr51nmcsmDZwD3abiO4rjFGI2G0ZewDy3gqOo87eoHksT46up4jmDlEz6XjQlPe8Of10ZrHRkIsETzMFeE+AMUX0aLFQ5QJPMlx1iUOhQcDzonstcOUV3F8+fVWkfeF2LTO1pJcyVtGr0wy6s1R+89U27IHTORoYHLi2YJY5a4Y0KUkT8E9Ni2CSL5sLicirsKsj2uL4rMx5zrS/1YjnXnp1DO27fw="

env:
  global:
    - secure: "HLdKwdpaAKJrwUNYMFHEK2oR47FVzfKv5aovTfBngZJu+JkoXseL7UJyL8b3KJtBhE49QjWD5yTTV9CQUOtuemITHIzLGaHXa9gbrpgVHdxr6shzBo49Lgj++KgbHpyR+LxDCUJhLU2n7r02Rn5V+qEYkqF2zXJ9Pt2CUAHX2aDGkdEm/z8Rr9+2h9U5XUWSablHr9HAZd9H3Y4YjT8b0iAsrp/J0RgaOGhF7aSYiEVYnrxVI+aeSlH0Wj4RNzaCOaOUniJHoIWfQnAbHfn2F5pXmgjU+KWHrrXEaYuaPGS0bEelf8WAJjwsfDAJ/je/JcsG/nj6AxvB/EPSrT76XOFkeAUIBO8uE4ubBEytni80cPwRPXEVM6hZ6XmFykghYRqhq3uWhoiJf3TtGXzJBYH5WpBgOPFYMUAVM5a1B4VIr4l5GaFrG+95sPBQbFHWAdTDcByqXQhc9o4nCPve0C0EhHyaD/sCu97SMK+oqEXNBOS6M8I3kBrQpI1TZqf6Rl94pciD1QscVSjwI1Du7qSe1LKuaBqJ67H2EVVaHS04VbE2uR5wcJ2A9mFbtA+j5ipGjXFaJF6k9+Fo+m5Py8rWj6zWx/3QFkIPlS1PmI3gXwUIF4tSZGwLmIDsQMYsus1EA10Kr7FA9qRnSFS4avn57SwDJSvBLrYJrVVav/8="
    - secure: "c2PoumiBu9Q0ko31/azS8aml2hjv9pPIURxnNfKFWnru0UxXW/F06XAuzyfiBUSXcWgZ+mV2aOj+Fyjr67d1GCtcb8w3lVbaubdlDp+HQQ4iIz0YcTR6FZgLT3iQNVYqZEfmu4/98aeQozmLHbzXHbrw/Dv2PgGTRTrcZuMIb758SI3rFeA87IN4FtotvPXEqQa5w3GGNiFEWOrswKE2bVpeW8IKmdnlX+QCbBBHUoNcHlz93SPBfmbz2IBMV0eWtqw+zAAH6iynIetoxPnBz+mNdyEKRHNGmj3hsJsyN7KPI0ZhVLbxO6qAeaXdaH6Lq/HwFom8eRg2jY5utyeyovvx/EvhuPQHTxQqZu6giaJPkRYVAfr4hLCVjObgpCa1/jq6nYDPTcY74sA2iX1p2UYkjTo46WBr9Fq82BTrVgT2vp8OTvFXh+oiE9Z8Li0NCgSu0Aps8yUwmpZROTc63yjHslYdNVMn+2tVjKRRkO/6gTVdUKz+vlABE2vI/kK1f6Fc7wX/nYdMhgLuLdwKJdWURRGAQchzcBhBlpOFUtXKznJGsk6OUISr2qo0aGpKL2ajj5IEpyAELBLw6YPH2+hO5uoqb5RMMroP7qb6XkLaqia679SErppSwFdzaqAzbgHC/SDlLGP0zIwWhPwBzCNT6YzrEsxO3+nBEX+9x/E="

before_install:
  - npm conf set strict-ssl false
  - ./tools/travis/setup.sh

install: true

script:
  - ./tools/travis/build.sh

deploy:
  # deploy latest
  - provider: script
    script: ./tools/travis/deploy.sh openwhisk cloudantprovider latest
    on:
      branch: master
  # deploy tag
  - provider: script
    script: ./tools/travis/deploy.sh openwhisk cloudantprovider $TRAVIS_TAG
    on:
      tags: true
      all_branches: true
