#
# 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
# required to support multi-stage build
addons:
   apt:
     packages:
       - docker-ce
notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: "VN8+Shkaty+WDhjTuCbVkliH4H2yJ3GMK2cf8pxhQz1Po0qJNxuyO9jDjQRbDG95b0PueBLcK0gMZZkjoe47lg/ZqYMyEFjhKP0J4C0+thokVnM4MoT8xKktWjPyIRK2EfYEdR1UXPtmofNgkZmpwx/GARuuDhAiSo3myMZ2xWQx0ASVsWbkODBePUnnMVv4Hcm0zn9ActFBZW9aJaGjg8Qo+sertESCemWYhreErdXtXV4prlWJo2LytpUuXIAWLFnutYu6TJw2I7gBaRkbLN+4N7qSgddcfVUdBf8j6NqWwUz6BqLqDSZ031lKCIlTNpS/Yu/+9qgI/aBZ9a0l+Nv4o0V0nWTZ0aAkw3/HtZ3muDHHs7ninMq9IFgGRUR4jX4OgUV8Pu8OKEHYcUF0S0XiXbTfLIxI3OirBBlxweunMKtjyOUOLdWcmT2XQLYJGU7cdiG3SE+ONo7kR+BugUtqSzgCnRRxE4m4wkZHqOfyRI2b3RVCtEQHfewevZnDCbxYxZn+v1mMjE4zuenhu+hbtsvQbbX+x1MeDaL8RYrwjXXf+TrILhnj1xkuHTWAgKQhh6pP+ZaNqNLmmSLOqaI/v8Ysi4rSbkR2Pa3k0/ze/tPdjqoD8vFZMPrSLYOWTqZYQCFF5FA72DECFP04tnb0hz5c4joxGJpRlKs1MW8="

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/openwhisk-runtime-java
  - provider: script
    script: "./tools/travis/publish.sh openwhisk 8 nightly"
    on:
      branch: master
      repo: apache/openwhisk-runtime-java
  - provider: script
    script: "./tools/travis/publish.sh openwhisk 8a nightly"
    on:
      branch: master
      repo: apache/openwhisk-runtime-java
env:
  global:
  - secure: D4kU9O6bs63Myb4jaEgw1O2Kuy6aTAUKEX1qZ0eYMDouLnPOPnZaFWmpISKTrJyz7hJH7yY8Cj7xl5qwsLB6JZZMtqT6yj5J/jkUJjyLKdQH81PrYy22rH99xS2t5A1dsC0A/Bf39R/qNc5tx1wCMVDF4O2rFsUtn+8vE+rn0nXsiPeWhhZagk/Hrq8YbwzDJHOGHfWe1nZIcU8MORzTriX7J2VAF0AcirPandMxff4FgzNLk432DN2GvgZIlNtZGT1DWLtJV/Sp3unD9abXr5xqNDIW+fHrMq8j/JdHC6+PFtZRFrl0Vr6X8c61PkB/ELGF2MyzNgBTnEaJixl1pianr91WK4y0oLUwpSJCz4yoQGVimAAtqMgNXjEyFMcpLClzS5TjMXKaUfi9mBn9GMCwLi3VAuVtMtH2IRW03PxIPyxkbj1j8Nrd0jh408MuMpuzyECgb+E5ffbd+0YD5XUNlTkYLFi4sEh2xpzvjGrNbrTe99zFrHt3e+dbmoahmaCyDRsxD2CDI8b++HyN78z/jO9A7kFc2TAZbWa6Xygkj1nEpnR1y4TB6eqdDo7Y6W20dLjeSSF8rACw3bM3lJh+K4/nv4Nlo6pfblhvs7T53ftst+tHpxJoQy/gDC0TcuyBThrHTeI1j7k4HkQyN+NqezBdFN2ElufjQ74ds2c=
  - secure: KzgDAV8O0ya6JBqSs4J4A7A+2n9Mgs5kRzhwwPdUg7ExuG2xXwWw1gafNPZwagfVOQfdqLzfF4tY8PPbTfloqEomFmYI/9PUHU8nMiMQkhEKkU3Od6HqqV9/WCf9vBrmqZHTPQNRVUvsbcOiYG1xtQr4JPHySJnk9VbgumRCT+f0xWK5mGK3CQqIo43F0TScjMONED/h7yueT+zFIJIfTiOXgtckbZdi7hErrVubbkduyzGSMek1Pfzy+m7Ek6jIaS4iD6duSRfxO9GVDTMee13cD3HuIWWfkZMkNiMlXBLmOPhb67lt/dgryxZ9zKxCzJFDW3Fx8uohoFu+sg8ZcyCeeDqMUfeML8rKAdNk72e2W9Vzedx6lxoTIhLYA3KLj7kL5wTxEq9QnSI/dMPqJUG/IA7Cr5fnJWRAlJ3IroQqBH8vNZ9zuoh/Ap4G2kXL1m4JECPhBlsX8i9RgDrFrab4My2IOHBw+ZA+cJ4h5njQUkuhMtlAhJ26jwQgYhn/sSMLgb4h5IX2iiRprsrg912vFg0ZrgHu1joIH/1XEGdArkQ7O9za4mowEmOuATux0drXTRKGe6z+/xaW35K8tQ52ToJRMN+GZBKlZoNIZd/rQ/y1Ikb6PD5Gfjk0WBnxYT5jV+ted7zCq3LskpWyvXtVTKoOqPOC/cDcY5JBPK8=
