#
# 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

notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: "RjyijvETg6UQu6JP8pXlAo2FKnACtRWuWVqQRzMbiARlKF5nWC4AZqQqzzebyezFt8mkfY3DTEKxL//IxnqmO8sl68setE/RATGXVPnHTyAs4kJcvp7BlS3v0yl9v8usE14AmsBxMygg8C5rbRLeEsxMqts9VbRycxCM3Ml5deQVRFhaBMakjuEcVRqDzmArOlLTJto/qcV8orv6arIdNzBOMNQLN25YnVnoGeoCd/8za6E2HiWV1+plv0wrpAJ3jECu2l6ADD/OYKQTgO+2Zh8rfpC4L4FG86BiEfaZkH2ptKtmt7jSfr/oG0tI0oAhjglTlbj4kaLMPejBB1c0B2R2YV2nRJwsFQ8jQfMFJDjqohaAh6hd0xOih3u3nkgzCoVh0l2zA7NJ05GquJFDlIoM0W2SAov3An9SFIt1WpigDS4YH06k5YlEyFSIJjJgwYwKLjvyeEL39FeVbb6Lt0DIXaaftn5KH31/ueHYhxeMTwpAM6PAHcvxWd7w/gritljwlNVHXhdmcqMq4Kx32E/prohwXGpakCsrhDeqzIKLDt0yCvwU2dgHr6JN6BY31EIt6T9qBOQ89ECpDeLRu66yPENWqAL3RsXUrgoKfm9OAEwLx3cQrCNakdpIOPwtL5+2SiydqjbMV27SGEkr0BObwp0r1th7+gN+a9rISEo="

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-php
  - provider: script
    script: "./tools/travis/publish.sh openwhisk 7.4 nightly"
    on:
      branch: master
      repo: apache/openwhisk-runtime-php
  - provider: script
    script: "./tools/travis/publish.sh openwhisk 8.0 nightly"
    on:
      branch: master
      repo: apache/openwhisk-runtime-php
env:
  global:
    - secure: "CE5mw5ZiXzchr1HcQVr94H8vN8U8Q/te0nPfWgEOUEbFixTRe71RYEKBHno/WztZd36XO1B3/1Ewc37FayFw474FUUdnrkVKh1ctzpmtBhGHw7KTMmSnICcR7ULcN/+WyjzvU5fTNMKEoaLcAcg4qEVqxnN4m3R1E8XJL9c0Kc8Hs2Mry0QqY9meX/DHeYzgs1VUuO/i0mXeXU6U8woP+eeGypaNrWk/U8gR9nA4VB49EVZZ1d8TtdaC9/+wmMjl93YQZccs1K2NTNJfDDU9Tm5RQQeXM4oZYaOaHvdlpo+iWhJ4blyVqY9i6NIx6satm5zV5amfO/hISuyfYdiyA/IiTvbewE4cUMq5W7B2xOUESmZQFqn4ssnCjKRGw2km2VnnAAQOSGMgQ1jUZUOYqtxKjTMYTtM8cZqYdo6URJy6Qz4Lhg/xfQgXdrPZZoKIoo4NcESHLaTfxazEB3nePA91qg4BxP3SHG0PcHtPm7fdj4RwlsMaIrPim5Kcz/Qpf2qSMO9ExhhtXKPMTzfAzanyQ6mMSgYjLhP7US6bESRsnf78PWvvo6krOkaZtxw+RricOg3YsTrs/6UudzZ1sT87NBbEjXy6sm7lKtcDTqfQAyrE+iMhdggSaivvpY03i0cBp3oqdoyLyAv/Usx4lGO0DuVX7gk8lO4aH2b16CI="
    - secure: "boFF7esy1+VdGAOpOD6rH5f97UdLxvV/0FuSzahds91CvZsxl2GROQdoJjcg378AvuoLt5qo2NgNQn/jEqw58LUaAAPckhtY+9YnB3yTH6PaIAZU6Nh6O6TbhEQKZAvxJ/sA0FRVx92rlaRxEL7FBD0+S+sepRaA3n/PWUaPZlz90PhY+WRoKZPLN9/zkaFuFIV22HLSbP7HBduTBfesejOZoHDzlI7/PVyzMte93PnGvzE1NXebRLe/fc7xm0kkuKGU6EoPeVHIRtSy6InQt/fS71uS7XT/vTac3B9J8bvB9SScv+UfvApiqdu4H8LEfaxEuZLWyHrwOcCJnCS6q0zLdfzVAO3YDz2Bmd3+iiXmxcq/jumOlSv5ZTae1SXIQmBvcU3/xLr8RV9ZpHJotpQphaCTFPS2Nhxq/lMObfma9a/OtFG+M+rrRI0TgH6464yn4Pdtf2ToUFhpulWMA2131I54cwtLHfQq6gbAQk0yOXxWzkqdoUXWPV+x41dyORo6sY6HRRRQR2U6IdE6P+MdpHd16jDwII6LaPll3NuZQWyE3W3Dbe6HHeN+J8u018JU8bhS8Q2WuVB9MVX/Gb6C44IZOeyTHHr68ltO4/IVDtOeb9mIuBWQYLTn6Q45+YxQ9JdetLHmc/eUwqXKXfKOcByWNkNPOeKE9jLjyrg="
