#
# 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: DG9V6udwMMKoDbFZJCjau0KAdUTPqGCIBvrPCblpXYEH35QcpxR9MfL3A42h4AbQjsmn5sg7zIMkDI1q5Fsvo0ood8z/mrUbPldF5dEnSPwzjV/ErGoFWPdKyPvkyO567XQD2GU7ZL1GjB/marq2qS+zx7ZCbkxAJSOiDS5/c3dD2yt0QHKkMKYt5Au+qs674y2VPNM6gUwtxY8GjyE3I6MubIqmimUAHcdt+PBcIeJOF2CET01KiOUVRUaKlKgSnkKks31ojKMcwwHJue7/KJ1fbUMz1traenGKA2NoD4qR58QRYCB+W47vKvtX6K7jL7w7Ck+IJ3MJOZjP1V8GKoNhfPgxuxZpWnJaZ61iaOYLAkwqr1bicf1qkDzDXE34XouGkocOJWvU4lE9MiuP3VWhpQAeV62pDDxnD8aApmbykCuhcD6cUwbbi7UF2irnOLdDLd8wpP3OCo9faHSqmjlnzzLR+KzZoU5J7P0NXTdLOEwBIyzvQv3s0AvxNazUR7vfA+HDU4qM1dyfKUKBJegAcbWSRpiH593FnWXYDWIn0Ib9ygnk68EfyEFTc4Ns3IZrYIJkOtdXcevU6vpQf8HFwJUxOJOeEKjbu/xNKWTjceBzsgMIk8eq4+Z4Ye84rPI3oQ99UoQlX3QjOyfgHzTH+mctotHM7V8puW3V2wQ=
  - secure: qbHuG/MuxDsW/OZActec2oQDCiuolQPDCdBGc/ExPSe4hWf2xofRAfvYsAd1JXZQgNcy1S11zJ/0RsPFYEo0eJhr/HFpHF0q37R9OqTvvasf0qwh6BQKpdJRq9SJQ1pW7f1wpwJykCBlr/XgVsntZ+ykOFTWnQySC5LivhbBcH21EIMy2WZTWZ6ACitBd798rXz+TgE2rjWLsOwW9MuqGFCcThkYR4auOmA51FjcW2ni77NARYCTojrYpGuKAaMZoo8RjwNfuQXmkzgzKyRDX1LdbE/03+E5Mqf4896ee+O5vCr6SgANnjqhZX1oh2z7UQ9myyrWL4MavZfpg4GWZNcrDsoBPvpfguOQzLBRGc21W2TR1YUK46x8AuoMsMKhrOmlBog3JAedDcNTjq8vNxdRpkSDAJqwuBS+aqTwqq8j2Ec9woXm8ObIzXUQ/X+83iihEHD4TsDhmLDiGJ8NjSOs0E5C1ipQ0tM83Yvcgt4yPyr0LsS9nlNAtTBI7iCxLbsDWgngW+lndYMeA1ytPEYlKwl/nx9s7KV/cLnGBNVpx3vJo4XQwTc/JFO7KVRJTGZ6jdD6vNIDW83AYrocezaYKvQm1GSE9GngM3NNv5uD3OO+pFTowMrh14qK6EdgNvNjyMXHkuskRjPj1PKmP4fCSPGlfltldIwqZQ39QJo=
