#
# 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: "hOMVqtb6i1yclhb9/OK73yIrNUM++q4q2YfiujV05nsOblhAX5yYkYHLc4QTgoKYt3PAUjRt8uCT7y6CyIKuKFblivSuFdWzcZ1mbOCOjySet4wEu91BdUsqQH7kSvlZJPa5gwO8LPZ4KHBZEADpCZSAtibq8QvL5ExAjYjjolF9mzNrbbhojCvkN8a90da6959Pv5UeUoXBmNSwb0aVG2dlI8njFoPQhkds6gbv1htEAekNIc1pF2xvKRB6j+S5aU58G9E6/Qh0Leohtz90oi6xZ/IhIR+KWpTVATWCjYgLRdmNFc8n3uh7iVtvwceAIWc+GNNXDMLj2Lfm65mNsQUdtSfRUi9jd454heXxW9u5GgBwh/v5Ai2wkrRrDYjkR5MCkA1N6BZ5VRI/jAuM4m7DJNTkrtGc+UYoFdTaC0/yxnL+RfSrWOw5SxsN3EJsYYnBgm4IXP/95cNbYVm9NMP/FLza8n8VNnKU7/H8st+jyQkgHPJ9Z6vWnYXGvkjgn08w2VuzPabGwBpWbt6tjsJwaGUzljE1Qam1CgbmU9EJHRUln9ymaGuKFYGWtYWS+L9KGkjq6IqTIm5Ug7vni2YoR6NwXuWVe+nyU9b8J3LhUgJMjbSqcBaWXE1+scIfIuMAIFMol1avNL1DYzqBaTIZetES6zcOw7i/Gv5TK6I="

before_install:
  - "./tools/travis/setup.sh"
install: true
script:
  - "./tools/travis/build.sh && ./tools/travis/build_sdk.sh && ./tools/travis/test.sh"
before_deploy:
  - "./tools/travis/rename_sdk.sh ${TRAVIS_TAG%@*} ${TRAVIS_TAG##*@}"
deploy:
  - provider: script
    script: "./tools/travis/publish.sh openwhisk ${TRAVIS_TAG%@*} ${TRAVIS_TAG##*@}"
    on:
      tags: true
      all_branches: true
      condition: "${TRAVIS_TAG%@*} = dockerskeleton || ${TRAVIS_TAG%@*} = example"
      repo: apache/openwhisk-runtime-docker
  - provider: script
    script: "./tools/travis/publish.sh openwhisk dockerskeleton nightly && ./tools/travis/publish.sh openwhisk example nightly"
    on:
      branch: master
      repo: apache/openwhisk-runtime-docker
  - provider: releases
    api_key:
      secure: R+7PrIf0bLqcQJ9XRQX1Arnund9p0CRdn4TQbvK2kz0h69y233FS7JVa+U6mEptzUErLa90PrONDfB/iNC1YLn/pIfGsM2l34CTC0OQPgHRuY6uBg48jM7rRAM3nUHseFHF2o9Hh0zXZRI4lj+nYe1LTR0Xsn50AGtPAeIEHItv4ojGzujgeBZsjBjCSLbEGxRjP8XqAgs/PA4QrmcSXlP4fEwidEOp3wqAaTIpHRksu7nv3j8H3IpWG6M3hAYn0LJcLi5pF4jwsq85H/+BGRp0ZbVW7uZtpl/bI5T0DkmPXEI4ywcwb3w8CCFs9WMNwB9zMs5j3MFX2dzzPNLJ5ostuEY6Vwzz0tdaqEoAB7n2kLd0akKX/WJiu7Jh35Ul3tYhLpNIWmO6bjaYY7fEdtXX1WLBVIlJIEd+wfDd3a85sIFTQj1YT9os1iS4B3vc9tpbw5D51qzqSRNtoAfV3tablp5obddhKe8iLeSB41lY4Qm+K41IgwxWKiRiNXDFkOPaa3MgAanGzzouQYrbShw+k7oCg8yJqX1NH4vP1H1CAa8OCAdw4aa06xHUk9kNQfIeOl4n9pBRL5dS4VGccCKulWf6ZRo3ypmP7sJL/vbrAs/lZJNteImrm0MtCPJq/5H5eOrQ5A/Kd1hkK7kquXYsXATgVFkasHqWUH6lKurE=
    overwrite: true
    skip_cleanup: true
    file: "./build/blackbox-${TRAVIS_TAG##*@}.tar.gz"
    on:
      tags: true
      all_branches: true
      condition: "${TRAVIS_TAG%@*} = sdk"
      repo: apache/openwhisk-runtime-docker
env:
  global:
    - secure: "RT/4lKi5mnhD92TRBXj8xg7DJvvaXEmz0hk0i8BzYeuDv9X5xHL6xvCW5DdotHzgqaDAdKUyjQemhmGpLTmuuTFBqDMPJqJ5ojSnSjsmc7wjR7F1+7JuzKAEGbsOYJyXXOdzsvi4YJWBeW66lOj4nzsn+2hYFW95bKg3XUH4FXeIRKZ8wOtLFR/jE5yMmA1Onj2HtVKtpJYUdkyhURdYy+F1k2Oqih3FPDd+fg5y+yYz0HbKYKgwo8/qSlKVjMm5eeaWUoonjE1ds1xE3TFXAJ8Y5/H7wA19josRe0l53AGTrTcYUG1KsAsiHlTRD2F8QE/9aTiY/r38/bfSBmS/QAvRxfuQXVTzVRnY4msJ4pxleb1BsNe9wgAtFZArCKsUwMaKTMklmZTfgqS9HqwI8xCpqNlzurpLBlk0Xt40717YmuTdF5Zi18ba2I1ZlyylpkJ44Vr78LZWkNQWu5WLM+sxA8IT0pd4wW6hhA/nmEkbXv271/LQ3ev9dvDiZsLdtwGmFuSKHpB8E/UJtKNFbW4fZhWvjj3EcOL+eLOmrbZZgpgoInNC+nMCAXrcl10KfH9Ms/qACpII/VDJVCpYnEup6jF1OPJLBKdCSJbir3nhtGEcbehYrjryX/RLs15Zj6dBj1AOGzGePbpqOB7CEk1u7y3RUKI9k4W8lHwYCDw="
    - secure: "rhBA9z2RTS51/p1XpHwnHJteMFMMAiiRgV0WBeWg81f3csX0Qx0z+4VYEljtqwiUez3vAD0zaO545YDBSFseIRzF1AS7Mix/AJlsLvMdx47ZpzU7HmeBPxnhWQjyi7FUolmyb6QEwuokwnmUCDiZl+SMn93kd+/v5xztGFoCTeO0ySOUKZVz8g0PCXNrj3/EgNCNGZi6HGk0W2ZLiGedN0vr6m4irXD0E9AbC9EzpWSkcXvgH2HmptOo9WVt/SLABYKYh/epCH509ZcAYJi16na9kMumgqg4/XEjmt6w9EsXBIR6ylr7I5je8xFmkTUDKToDzan1LxJBMLszqJJ70h2A2IfT6UAhkI9g3LQHF5hue0x+7Ak6U/Kh5ZktBX4LYWGO1NCvRP5/v1hvdj++z0lZO+BmtvrDo+64K2d/Mt2x+XYFcdZ7uSpuATwmg484L6Hhu4dubdZAUbZgPf769r6Co3QM6Ta6lg2PNy3YYDTo++eFvzLj6J5qgZK21zDO0QaajItzqd2YxQXMWVuj6Bfv2ZweEttCr218TFwiGMcmWJ004Dy7+jBqp2AXeIlzNPoIuFZ2Gw1hJPQvKbnUxUlgtuysXqhLLVcb0VwwaKJmMb5DK88sxzRfmjhkfK1DR5CG7Zau4/pTdLJ94yTscXyMjDX/wWxxR0TXwoO7qCI="
