#
# 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: "hS4q3WH3dnXCZAJ/vH9SNQIMnu/AOfdmvSkOhFGgUQE8gUyxdCSwJwPTzOYrDaykXO9GKa5mnYiCarhpQ3TUuHa5X6Ei2M2cYveNED0fwVPahObUqvIW2RmsdXllR0Wrca4JaWsZOsdOcFYKaqOPUFTHL5VZvm01voHp0WerbtB45HxzmDKBDUIDbWe8i8rKFza+hEJqFUmep0Psr2YEmocWnN69GkAQ9Bzew7iFVjicXIh8I2L2sy1dgt0lXESvH51+HT6nfGTm61kjUThEJZ8Qo217rjNLYcoxgHtPMrq4EezfM0l1U2USidu0yyFKHUY4JXH6sfxLw/Rp4Wiphgj5scHiQZ7xbDnwNmwYSmfP6vQ3JwZ5oyckcCjnSryqaD56pUkZjvmxi+OfHTJDN9FrE0kwshWcYBPCww8Uo2nlwrzNpfkxp3bV07iEYAXUIRbFj5gkpzdrp/ZhGuWzCYwRGcpqg8B1sR1+PiBIL3pm//sF0r9jWqKIPRkdlClvTZ20g1ERCzKGPDTgvjskUD0AV8rf6Jp8BIOSTc5VEIDXqIfptdrzMDKOJd2pBRkMEQVwlax1jcpMgFb22sNWqMXNaUn+39U7ORNdmQO20/76ziHr20tktBRymifASBCjrOMy7BFIlbOnkxYfwI6zUruHtTtBBsvr8NcEvl8mHQU="

before_install:
  - "./tools/travis/setup.sh"
install: true
script:
  - "./tools/travis/build.sh && ./tools/travis/deploy.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-swift
  - provider: script
    script: "./tools/travis/publish.sh openwhisk 4.1 nightly && ./tools/travis/publish.sh openwhisk 4.2 nightly"
    on:
      branch: master
      repo: apache/openwhisk-runtime-swift
env:
  global:
  - secure: YqQG7kchpqrqYNCBHmoXs5QJFJQmtuy30WYQnQtudVuqZ1/PqsTJXy6+kNxQ88z5NoU4XZKClB61V8ZVHqGsbQd3lAsTy11QKxf+s4kfsGBuoRlow4eQmnUnnaF3E6KVV2nJ4oXro7RQhP3WwLjpsThrMk322B1ZtlSRALR9hK5wCit8Q1ifSJqmKLwuoNSNQzd7onlDF19Q9pyKkgVu9wLKU5epo76wuFkRfkbr1mB3fF2le2WRNXer2N8rL8McHousFPYA03IIdo6zdX27yGmqSW3teCiVYieGrqtaGhH0WCE7dcmoQ/gs7IBqn1K80wJSR1lbkKDiWzmb73FWScKuXmRn5c4HCq/wPya2I5JNUGyPg5YI0HyMDxGTJ/OdXv2Aizyh3hyNMFjtbjK4N6gz6kFAn8Uo6wFs441Bq+S3+ipLAQ41KIQ7E4/Di6ERSG8KKWKy+LlnA5Qy60CQHRIyJCg3+aqfTe7LUrI/mCclRelnLzUPApFOBI1zPB44+lJVRFfcAKhKIen1bdljTwhjP0xkmOS7rJKtEUl3BvIOAeHC9Dgts9LoqhcMjeXexasbgIpm/CEb8yBTSs+1/FG+8r/v0qGEI6+X/HRJaapQ3vsAKI3M+kbHIjrXhJaUlLWc4dk70B7Ee2eh057cPgInZYLXPi0ksNWy8wAtAJE=
  - secure: HbPHrmRk1LOjFE47jUTUKMrmbVF9GXRmAj+V1vaoshrRJAEh8rj58uQwrU7YS6EybyHOHL/26G2PcQt8HrQcqsQdvfwT5QWYxGjxz24nvU6B9PpNlaG6vOW61ls519zsYSSlgb5e1Wr2bjSxpbwDzLzovi2t4L/ZliRcevZYRGJS7846uWSZ3u6De6bwjR5onE2KQ6A5xG4WzyL1gQ/SISFknb1o7l3YpXJe3KZVZztn9y8eCujgSysNSM6hu60TXd8v2lNp3rtof5Xxb6GZ/5W7aZYQUM5o+/q+vdC/gWXgs7UJwOc1Yxi7Q+kiyQLuR69J9XKwvP+/PakySFrUjysZUqMh8um5Mn1y9gQHVwEOXjshwmIWLfoPQ331QIHgzdlrMw9HAckjO5q1C9EU9XddMTSOiFYRGowKuG3Xzf/migIpxhi+GWPxP0dwQt3ERJJ2yY27yvIz7RBDS1zWQ9erek+w0gi9bguRH3r59m+TmamgeYXVqm6Z06Vs7VxfICwbSNmBdABRI7ezPtOvV5OK5QPMzOU+BtVeEF+9jrw9NpyVvvPUnHBpf/jMuxmR5br+b3bvX3bO0tOtivPtw4eDAyl2w98gnViqz7EAmn7lC1J2Xj+sswye4vYtP0j8xBXGW9WWcSpplC9yTB68MRKw6TxsH4sQJ+Tu1trd8kI=
