#
# 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
group: deprecated-2017Q3
language: scala
scala:
- 2.12.7
services:
- docker
notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: jzynedhJsLjEShDWyPmlpzl9Ba704kvjSuLKXu/PEXh9ZKTNtG1NYjjAHZCFzMpRxaLpnUnboUNlh9up577rgQcSsczPu7TP0nabRfLupLWt+8Wbd4+53B3NDHWJfep9LKSL5FmgegMd6pLK/JUMDctW/ba1+eiLEAQZG+jm4i5XntAbvO2YBoqtmiRK5z8W+/hlmX3TuoP9KCgLHMwu9u9QQ/7boXYNU0dAHzAB+m77l4AM5LtQh+FnA+Vl9M48PNZMXltrrSqaH5pqs7GB0/LmiSKUhG4RSFObmCo8nwlGSrQVHOiWqYV7q6q33ivflZnPGUewqhwHiaTM8VVrtAa28IQX205mkKUa3aryxVOKw2VqDqE8R29aEKNxEB/Vd6YtjhwfzVR2g7nJUehTHkiMTlls1uqgdE0Y39MVpJ4fV7joglEgPlMz4DmePhLFZSIfhwuo63t66e0dG8u7i/tb2RT7DqweQXArTdu7DTXPiy6JWTfHGCjr0VPjxwoiIsGp5FIqZU4QI4hVp/YqieLnF2uA0ue3d3OpBAoNQRBf6t6S7TT4XvLrctew5k/nWfqrMFyj6/bVnjB9r0KxmEGuYWByV6x6FZGjfp+6nnHEmyxZO1SEY9PJcn43GOTQsNgDWvBaAlM0OXX24ppMgZQZlBG0G1dWH/79nspu9Z4=
before_install:
- "./tools/travis/setup.sh"
install: true
script:
- "./tools/travis/build.sh && ./tools/travis/test.sh"
deploy:
- provider: script
  script: "./tools/travis/publish.sh openwhisk ${TRAVIS_TAG##*@}"
  on:
    tags: true
    all_branches: true
    repo: apache/openwhisk-runtime-ballerina
- provider: script
  script: "./tools/travis/publish.sh openwhisk nightly"
  on:
    branch: master
    repo: apache/openwhisk-runtime-ballerina
env:
  global:
  - secure: 7RwSWCgIz4jP8vY9LeJRD+pLNUBuksxeJMFiq40ycB20ndBHvpOBj8tdZ9CG3lXFnC7pGZUJCSrPJ9rv6k0H5xp0tvjD4ikG7juOrqPncrOtsDt51ZFA3RB/4YWtPanDxKEeWaFKwc9Way/Ty8JHbwx/utBe+ZRcBzYNaDjE7uzqP0dVDnoJJGtQkj2yZwV7oizxNJd7Ys52UFpDibiLUHdb8wWlBxyhbjp9W+lv3I9s2MKzby6RM1huI8caDIbR30GG4wOtqd06ItltPmG0sQcfCCSOEaA10ofSC1OxKV5dbzSRVITe2e+CctsUYXCNLZ4F/2a6Bybpc32znrEXMuaw+OfOLXJth/P2aHnOJ59rf4ZQUqgqMJcGmuT2SA6kINn/ddpXGelwC6DC89KBBjQNa3wdrdjlWLOr5tR475DzOWbOqLtWtbFdf0NVJdE2Lqya7+C+eA1AAAjgrAzjOIapA6RIS8X/kNJMFTZ24tHVMd8fiv5SCEGPdX1aCvbberQclruQKqvtAuNu+gwyivcQ1J6NAyv5Y4mLGrFuh47hDN/2aX+C459sdgrvxi/d75PSsBSml2v4S6fTonVv+BvABp5tXdKmixMCY2edU2JmsxQkttul9+akmoQm9UCH+reoGfkXk838V/Vy56J5PsUrwmfp/x6fWJJpF7rnQ5I=
  - secure: VCFPYbB/ab4z9pg3cjBNJH3R5twPgblGPvchNixW8Wv+uL6K4WivKY1rYnGpVtVq5zIJ6kO0pZrRg87i/LYx6ZvRYaipcuepcMY9YyNBuQ211zwrDnWzSWJFYUKO/8D/68PHND6Z9Z6R4z3+G7qvFgklRF7sdGdopTAiuv4Zl5bhuH0hUQS+PAU98hVw+fs5PaBVKXTJ3UnzWwUI+bFgYSHPj1MJQ9xWYT6UiyVfrFee3nPcQdlUuuMtZudMarDRO5Hi8X9xbwrscVXD3y3wgtGrnq/a2JEiaNr1wjXNQ8V55rprzrpDo0mCsmwrqghwIODPOi4t86UrggLJkslq1kyFlrtvLjCyH6dDwmN6zGSevSIsz4Ib3Ni6HR7EjeZ5Rila3ldbxpXc8FxE6Zsr65x3d+uHB9fuaYgUAXNrWKj5ih7jNBYUy3KDqITzYrdCiuIXWWQ+et3e2xYz9a0yrYmAnVbQjpnA+hkTZNuDBho/ZqEIjKXIm1GFIG53n4T7vBFc1CttCZ60eu1Wx5FvuBl2goxlGnlju8/lp+xZgO83YtFC5PeyGWzVqt0qX0O913IzgwxfBKpca9fNGlu7Bx5dMEDSZob/uFUBgtu1mXu7dSpgHPrrmazUMKxyAbYozCseMObMYEe7cRubddC2eVs4qS+nt+vOtxvI8N6C8C0=
