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

dist: xenial
sudo: required

env:
  global:
  - secure: d7CuMXbhT83W2x78qiLwgogX1+3aPicd1PlTwwNNDN6QSkImbxareyKThnsqlHIiNj3o5l5DBuiYjy7wrF/xD1g8BQMmTwm99DRx5q3CI3Im3VCi/ZK8SaNjuOy24d7cf5k2tB/87Gk7zmKsMDYm+fpCl+GpgUmIEeIwthiAxuXSDWZ8eQPIptmxj56DeFRNouvXG+dEUtBfWiwN27UPxNKExCixFnegmdtffLbz6hhst7BHr5Ry9acbycre98PCwWZcu9lxFs+SJ1kvnzX2iue4otmDkF1WkJjxaOFPJVs/D3YItg+neLCSxjwBskPed+Fct8bOjcM/uVROJPNIq5icBmaPX2isH0lvtxOeVw/dmioWYXYPN9ygBOe4eO/vtPllN0bcAUo5xl9jXev8ciAozYrYpHVh9Fplfd81rcYTeYzALmRJBdoiWoc3KQGzwGc9sB1ffmy+KWgG9T0zbnS4fALSR4PSzyNlKSLXw9vuvdNP0OBYtO+6yTJXavIxqmDoj64Lb93n+uGPatnaIGPTKEEBMJTSjsgYVEfxzzZuxUT9Ldkf2lzqvN2PCllGoMqxkgsdb8i4v4QgRaMWBDbKa5Va4k0O4dnhRmtdbJavOSKN6fECJbyfoJlV1VvJGxk5znVLRznBmUPBKbNccyPZJULugKD3QIh4q8Q5jBU=
  - secure: CJtnU94HTDqd4A6uvhFl8IpnmU+wTdlzb8bPBFUl/lI/VKXiRrYpgJdKUro5xEoxFKuqMprLhbyf66niyWLTIeogjUAEu/h/o2dBVeGgSGKoqC0hQgqvnxKFeGlzFJ0XuEs3vbStJGRnQszGsfnnDrscJtR0x9X+1w4aBKI7iPyyuFtVkDD1UsmBbSi+M8FTeq7G7A0reMDaey7uog3CFCpIMl4geshcohQEcKEGbnXQZoLPFpb7cBOE83VXBJ7Y7Dgf/U4keiLovvnuJThGKZm/SVV2KlELmBmtmbx3rMT6Vb5k9ChSdRWapromNnnzmJBIQ5Scc2mwV3A93/SMha1F3IlYpDKs5djfTw8jZfVnuiou7HhTaRjHkmmcwP12/k30gLe2kw0Vezg1TCY4zgtOpcmCxc8RHEy0ceA74rKvRi8LbexTCwX+iAMQFn/pSrh/OqAq/50JbLyczcoO1zXWS38txUQNLW8i+XllhCg9pjkjyfBeGjOOcWiVIz9rWJd2XufjSXDcj6xoZHtkh1XDt1CnVkpsYKtyyZucQnhUM9ebmaWqbSW2+bpqC/2hI+G+kOyyCesGdB1q+VmN1augMMs6RgWjk4yw5dyLAshATSoUlE8KH2cDcJL19r4ECaQ99PSLwxoB89yfPoJiNc42vwxRdsLmB1BMNyPa81Y=
  matrix:
    - TRAVIS_KUBE_VERSION=v1.13.10 OW_INCLUDE_SYSTEM_TESTS=false OW_CONTAINER_FACTORY=kubernetes
    - TRAVIS_KUBE_VERSION=v1.14.6 OW_INCLUDE_SYSTEM_TESTS=false OW_CONTAINER_FACTORY=kubernetes
    - TRAVIS_KUBE_VERSION=v1.14.6 OW_INCLUDE_SYSTEM_TESTS=false OW_CONTAINER_FACTORY=kubernetes OW_LEAN_MODE=true
    - TRAVIS_KUBE_VERSION=v1.15.3 OW_INCLUDE_SYSTEM_TESTS=false OW_CONTAINER_FACTORY=kubernetes

services:
  - docker

notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: L6YB/Fmn0lC9z4AEw+xGsmnGdgqxwMccFLL0DLlo2jM4APyVAVAmpuQhbb+YrPmpfD0GIGLaz2stvamO9znr7l5NPxnQEdUHo1vsdSEZn2S5NMGNqZBThAD2Bwocu2bMC8AXB7AW1bFnEWlJTiuR8dsQhxZaoVrc0TwTm8fEoHggWPUDHDWVxltv4zLOBhRsRYIn5VCpr5yFZax8F0mPxfeSIdl7mEMeDO6quuBqdhWqbts4Lg3VPYZ7p1c+XyEgEQFIFo9FAnL0IjKf9epw+SAZpXdZ4IRk3GQUT67MyA2ZzzxVzWZI+3EV7Ds3q6Nvpuv/4jxb5U5Did0e8gmqbyKgNWivBLraUpgZ+7jn+Uq+JYGA5GkJ4SMmtClYWNXGG7eKDguudJKytSJKKK7aiUrO2munOlcrJJVkk//0jjtbgcKaowWHcH3Gh5x9fFq4uUFhpqpXsgi7ZPw/5GYUfCLSyKNcRs4BzCBlOx7QgnmbK1MMGqkksiirujnJekNdBG/sAXnIo8Uj9+bE8J3+8/u2NxUuFn2tPB26bQobOUMv8Y/zpIzuS26MKqVHJ9d2FrYf+bDEmvGOzoroXzJA4nJA8dCBSzeakiB9E5TtyMGCwJHYHqgKfr2I8g7RKa0JOomqYxZR2b3yrAU5aWpMQ5HlGvrxSNdFhYI7wBoX9as=

before_install:
  - ./tools/travis/setupscan.sh
  - ./tools/travis/scancode.sh
  - ./tools/travis/start-kind.sh

script:
  - ./tools/travis/deploy-chart.sh
  - travis_wait 42 ./tools/travis/run-tests.sh
  - ./tools/travis/collect-logs.sh
  - ./tools/travis/box-upload.py "logs" "deploy-kube-$TRAVIS_BUILD_ID-$TRAVIS_BRANCH-$TRAVIS_JOB_NUMBER.tar.gz"

deploy:
- provider: script
  script: ./tools/travis/publish-images.sh
  on:
    branch: master
    repo: apache/openwhisk-deploy-kube
