#
# 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
# required to support multi-stage build
addons:
   apt:
     packages:
       - docker-ce

before_install:
- "cat /etc/os-release"
- "./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%@*} ${TRAVIS_TAG##*@}"
  on:
    tags: true
    all_branches: true
    repo: apache/openwhisk-runtime-ruby
- provider: script
  script: "./tools/travis/publish.sh openwhisk 2.5 nightly && ./tools/travis/publish.sh openwhisk 2.6 nightly"
  on:
    branch: master
    repo: apache/openwhisk-runtime-ruby
env:
  global:
  - secure: XzlQe3SFrxEgkGGeC5vLYp1LqrpRZwZg12zD6SGlbAqzXSOBBj4bC5aGsUc4bJHTE5FqfwZYC28H1b2dT5ixIhsm3Klkzaw0WP8FwMk0N300XuJ+TsVg0ByETFyycyHG4uvgvwhGCqm+mkCXkqacO0aC1zzAKfQPRfbfhbK0ofgYcpkjecUqPR/glk7iD5NZMbajjQP652AQYa78C0yGccBAvv1sxxq8eKokwTTKyiN1yCtyXm7q5lTQsiRkpt6WqQXeNDvJvAgTfjoc3zL+SUqLHt2eE4TFzmfRINyiKYQwxQubbvpZudS9LYY3vHNcJGNuHd+e88WgjlR9x9PajKJ+9nimZUuNSgFSX5VQVPs4Ebp12aqMm/7Zt5pISzHoHGX5VtnbgQX4Vtd64HZu/Ld6FEbHuHMJY2B8260V1Dzgc0UVYlN26vJ4RvbqhKNKzj1YnF5Hx3MH/jgWp+UFu9g2yUKFur4E0T1luUtomTgqmK5TnswOzCVlQK1dH+vcYnInNn0jaTZFib4oy7hU5C2sO/bJHE6SmVnTlysfy9N8rW7/MkuOuI2pSAVGnIb+7mK+DzBCZK8+U4JyDooH9+6419+Wifg6bAAkNyxhaDG7gPhrRfOt8I3h1cVZio3Qfphs5WGFYnTc78gUimYRUq/28WbvBNlGJAHJzk3+Q0w=
  - secure: T2PaP00gipVQlwvOaGUL0fr76N9+BGjtUMG6QcEJ+9xfnwcGxFAfLpqctqOFVVOEUSKOtKwpa9FLenXGNtKYX9+1soaevzRgZTvYeI2exal0fkLZH9D/uZEetTDemphpNDvK2iLp/ct3Hya5n6OalyEPJV6Vz1rfKGrNKXMiLO3Nc+4iV+Z1oLO2TJ1o1qOV/BnO+xCn14pm6+SKIX/tjqNd66yQLswWfB4rgLD+G+/+iB9VX66pRHpkmwdS+5FZgJ6jNBFSyE6y857nOEMiKqfrZkUoosSsf6WBHWUkJlnc1jPkwNwHhLF3tkmPZiE7jhSHV1vuw/LTe+GqDISb4rUsqF9pUuKV9q04U7eyiM7+AJfKoMbNCK5izxsMFXpzkZ08Ep4QsVgTZECmF5Blfe8MMzDHotfarP4D4CEkTmAd2wyIwmVeswt+Jyg9oOaEZL0GnCcmm5XrD+u66w/RI0+f79+5UR3zF+Fd7Wa6PT/s3/PLV+2ZFhXJpeuJ9Hiw3VTUxp3kpBXXQukTPejfF7+mE0bUZMyNEpnFUcShNX8HvrV4HiWED8MSub4PMx5w9yj9sST0p7XzbOdBa2NliI7nQI35ErVLgqY4c/qkWOSxNUYcEbgVom0v5uEnS5OPoDlMdvQgsKjjmPEd+wsLuTXx8ThvNv7bXbRAwXiy0Jk=
notifications:
  slack:
    secure: FKVfXr+/qe6D7Kg78HkendF7dU6I0XBVQh6oDlZlKfovdKCp2LNypOGJulvypTtdhy9/LbTxNgh6qvi0e3UMHiIxC4QsJFGIcSGakn0mCr/EIusbl1dJKUsuaiL57zHMeg0Bw5gCqZwfQszhNC1A1/Vm5Vf8hK6nxRGfBVW//2udpu1PUd/6dmHVx6ZGepY8EpVsuBJxdljUTEQGquo2hnLSMF9JDzT8dzjoczvI0K6oQuWPjA8ZDn6ghpHzERoq0bq24Z2Z8nE+BlDAwwgxxr0FaHeZ59ZawJ7FVxoGZicXjSkLKhO+TEuvdvZ2XRZl0yge0Lvqr6Fha3Oogw6AWkfdAxUtGJ7VVdKs0nSqEFCk7yPUV+V8BlFG6v5l56b5BcdFFQ1b5+3LXJqerSecCJH/3BOp+PwRfveLF8QeTeVn5834rcgTSJdc3b28zb13vrDY0ZdWLy7R5KOZFufGuImkmfJVbEbkLvt5wcAmvJbJS5HIxgUH+Djf23NgC1k12jkVVGFKrcUVE1it0be0uR+y50LqSU9oAGvik+BJRlrIbeETtJaJM73bs/i7b32cP2Of2CIJCxfLDjML8/xjqmjlpVwUaqWUfwtms0ubRqNyhvRoWPF6vz6QnHHJ4l8w3tuYR+WudMwRmfVltljRnyAmrQBSmGY/kvFqxAMPTeg=
    on_pull_requests: false
    on_success: change
    on_failure: always
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: uCIwK5oqWfnqMUIszYd0/yARRjt/iPWWRfBV1K7BYtIW8R5fc1HW78EtAvhvRHF7a0F5vK19lyMKc6hhkq/3rJi7D/MOBaQm1LiylVV4X0RqPg04WtOjjH4Z4lqLuGEfLooqOG/1zCbJabaUSXT6kY3FNa3rIXVaitHUs4oamkmlHiuusVjm/gEQFIz/o309obhSN1osNOeif15w8qtZM8jZBql7yXYonD/WEbsHOFsjdvVyFeiRQ42RVjQfdTmYDCkCyo7uGes9XfNNtle+4GA95TfSXHZw/beUwOjsA48pFwLU3091p2m10S8S3Tu7r4YVNtzcPG9TwYwXdoXsi1mq0H/5YwX4Hf9O663gqutHeRQkYvyCPKQnUO3B0m7Muc2HmEtDFIPrLfGvfw9WdWbbuvKYoeEEkXCsMoSqIQuYQijeUT0MMieu7nYBHhiswCUzY/ikBTzyOiTmoDQ/M8jRXXUwuNA7ge6c0ylZw4qnboHZz+90cWmiNwkObOMxDWgOzzhpWwllffG0Qap7vtotWj83vyPsYZnvpTo+B0/gsKWJ1N+JCcVmMG0CjD+rGU7cpELLSeXzp0a4Cwn0cDG7cmeu/TQvs/ul6gh6K/ssz+Xpw4f7mBQSYBuc09IF/jxxLYPA8XAjHfqerj43Z8vJnMqFYtpQS9qx9/Ka1xQ=
