#
# 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: "LK9+HMtd86ByfzgbUAFFFxGX7RXpcdV5zzEezkLrGu9C574XBItH+FUuQm1pxLh6HCkfrzEdOmKF6iksnceiYgBZ8leRblCQQovwThB+uLV5LnRVSdlWhNHJ5W3qlDYRVgeWW3OopMGl1Vv54uS6pRXvc1ziGYlPFbITQtnwfQ2dvs6ykPE11KQ5EVauSUdHmh8u6WhNkNq0eNMJ5X1UEFWgsw5f2HPKdmP0Gad1jMS+xCu/mZAoYupKKXEqAA0r2yPlzbGWO5xJWkiVeFghiRH/XHTn0YU+JVmH0C54+SJ+JZwdWmEbWq+OSkahSDbf9g0aTIRKTE+pyvYYgO9CitFcMb8E7rRxaLPUfGvp5zBtoqtDAGrjeG8P5frwplOyGi4Ye9lGE+c69h/hY0B8uFC+j3DHqlyIG7i8SDDcu2SrpSjB2UPCzMGO5wN2CQU1SpF1K4MXyO/lIkz96Q7PSaJlyg30cDnm/dHpVm85g/hzTRL1ZAquwjzJsDJGnYCPZEa4wNN/5K6qFpx49nyWTdRVZ4vimfcRc2lksAApxybvVyScfSMiuIf7HZo33jTfKAqUbw4DxKFmUPCnOzIe5wg4guzwMPXA+TKLtNow6q+Z25TitXmf+GpYo2xqli/TZf+7Ly2lmqt4jk2PP0A2kegRl5stXhkZ3Va02BM0hCY="

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
