#
# 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
language: java
jdk: openjdk8
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: "xR0NyWJucuOF8Zmkig0dk6JLxKP5IEuDYCj5Mx2vzyZTqLY85p5l5e3g1Id9xc8H7dDDZxZpxZAO/bd+15Kdtyz7RasJ8ca/AFmSBFLl39CbpfAJumaElayMoVLAGPcR1lCC07H6AVunENuPL16e/jgPmMl5QPo2Fmz7V++n/SBTgJzUXqgbPsB/If7DLphvASI8/pdFethIZsykf4mXfAmvxiDctZYhCo7/BE9g8euuQ2PnTtZzI0c5uZXKizODtTIyF3ZCRddzqHwWmoSAeHX9rkf0Q3AkTcOE20hiWoaqMnr/yr/gecCNMqF2onop6lkfZXFxRZbvDRDL0LGBWM2LRgkYfvU0j3uVpVHHnexUPWfwE+EIhMtdYismp23iUcZTd4uyo5pSMNmLgr8rxs2u7sIxMi31eshRo8QDim8sBMHr04iLdRPlvzu7wqWu97nhKWfxpAzZEQpzYMoglGiKg2U4luzBdMYqtc5xKPXX4vvUCJqOoLhYRX9sMNzgfdCUzFsQfexNkupYGQmxVz5X2ciyvbY3lAz1lce690HikF5A1v51jzWz9cNBoMhcu1DMn+Q9L8rFC5B0tggOTEHHz3ehIQitn5FVc+s0X8rvoIUsM7ayD9lBfrakYdMMwcwBBisEUe0Smh6B80y5rKPMSKauqvHox7llhy+EARM="

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=
