#
# 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
dist: xenial
jdk: openjdk8
language: java
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 nightly
  - provider: script
    script: ./tools/travis/deploy.sh openwhisk cloudantprovider nightly
    on:
      branch: master
  # deploy tag
  - provider: script
    script: ./tools/travis/deploy.sh openwhisk cloudantprovider $TRAVIS_TAG
    on:
      tags: true
      all_branches: true
