#
# 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: "1lEBnsNFiwSLx2tp3UqzFcfLsweth5MO9Rq/kKqSp99XL00z0pPvn2BgDUSUqtX1AeNoB9LWlVgaULdosp1llWP9P5z/N8eqlGEa3iTRDLWY7SDBAUnbC4W7E5v5kNLhHi3gkzb1BgbadchMNiSnpbucq+vDYAyGVSL3IrOOwHFyqrAMeG/ZI+KSqgoW4q8CjAkWjusWbxwOc/DmiIu/rsUDnAL8YUBHVjfvwlhs3MJ2EjTwpd2pUzqB+v4ENgoe29XcNFtIMHum+zDAJ9KB8Gggs86swne8xJQk6q+mGjWOQQDm1p/hfk0Y1g5aYAhO+XYgxnLhOeHOf8tpza3mTghtwdYdCVZsK530GSxyfd3M4cNSAqVHkQLQidEHQDPCXnfhM0pGiOFbYlMqUxG4P8SRv+gnjJgU6rRRuGgFVXB2gIhASRRJMqo8UYY1VGZwIpjQVaSKoGM80ZyEepfIhUarT0J/svhb1Hxd3VaWUxBCYkfKOZZfdSl32/qT7aFjcbLxCq1DWat7GFFqZPQMHpUH3JLXtXD6NCEci0rsbtIaOeSP+4qQRzXcrqESJN/d8Ps8wkGOiDjB7lmSJ23n5yI9mg5ecnMozvxK03k3aQK51UyX05+WN8GPLZz7F77i5aMjAL9SVpmEpVk0kGq/u6KFXQoBM0MrI7AyZdRN+yc="

env:
  global:
    - secure: "mBHstQIJFTt7klYxMR+GLQ97YA2jDgOVd4vBOCj6clugG6ujKvV0716r3U//4/qI0D7tu0EfSnGTs3xJkSx4Ctfz2xGfAA2leEmZJSoOxcvlayWu41+QLvH4ZCbBBchifvpHR1z2ilZF0owtwo3wlDL51zn+rxx/zmA6daesW7ggG15+uron+d1esbT9nEQVZfIVGOyK6vgcuF4kMPR181p07khG7jbRnH6F3hlox2el3t0ftRZJcADWqlSgNfv1EwCQBbhi/POTNeYbapLxwWhPbgNDHzAYvJrCTWj1M9/6wewp6q1rlDwsukRQA9zVbvjXqf+JCQYoWTsoamj3LARmsUKWLsU9+wOUxwiyZwZNXYGTke7eVvoQv3D+8Zsfv+LGNoYwCaNz5+IX5BdTDi4gIPNyulYanSh7UPG05tHXCXHXVEBPXubxEmXjNvVS9BC2YozSW6GMEyaRSh5lS2Ae9VuLFUSgh+Eernswvlt3KLb7dIhf1wBa/ekecMwsOx+6rMokPl4/LrcbxMbrd/lYYMD98BSgbxBBSyFWJOYfR6toFOGourfV6CP5mtbi/lxaM5LTskj9+VNGVqV0mSZwhpVrqU1Cf/DtrI1B0y7xJRiaCD7opnQ9hKBcXTm0F0zW8TGAv+h5UmDMItt0ZKuMYPpOM4eiR679fOsvmFA="
    - secure: "cZijVhCVtuBSAH/EpjIxfXSjZGjRULM5UYyvKkDZx/FqMd47K0+xzDWIfizowvFa4bGjU2JgjklmlERdF/P3Xp34UDciLvt7q274G8Rqnlq52KMM56iL/LbkeISeaRgbN7lWq+XZnkRDojAIrM67HUn9lsYs4SXAY8HCBXPnzhLN8dRE7BbEGKjQJceUQMxKNfiCVJ7r29qFXbdtjMQ8ea6lHJkczUaLKEFWYGpqIGXJMYAhDGd54OuwqrjOQR1AtNGjyEy1yJRoexKemfrvYl2kUuH6qtJwQv4dQMpSOkVtHOISoiIyHjsxYnCGgKnrLRz+R2F9I1PFxZaVlJEMrG3bc7CDZbXowcnmNEy5FxdAoxgxaTWZwO8mVRnaY/u5hEOkz23Hm/Kmkq5d17XThSrwQh9GG3DZMGabINwo05yAKjSmFV1wbWZmIYzU2ls1H2P+T833TkYqV5PQfOXYFfpV7jrBT0fydgIMIEmPp20Bejf+2KvDcn8ITwR8u25g7TIkmp0CUgv5blWowtGLBH08Ps/yM4YKXX20nNuuAWVYN3OzFAHmtHHAAGaEj0z5xtpKjwSKInFQtuAa3uTG5qMb2/xBxRKhsJmXYVIYRDsGg1Kmk/G97vJSM0WZykUt3EyvfQe4xq9UtHSO5jtnVl4XxXp6gQOTWSuZyUVpIHI="

before_install:
  - ./tools/travis/setup.sh

install: true

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

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