# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.

sudo: required
group: deprecated-2017Q3
language: scala
scala:
- 2.12.7
services:
- docker
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%@*} ${TRAVIS_TAG##*@}"
  on:
    tags: true
    all_branches: true
    repo: apache/incubator-openwhisk-runtime-ruby
- provider: script
  script: "./tools/travis/publish.sh openwhisk ruby2.5Action latest"
  on:
    branch: master
    repo: apache/incubator-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=
