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

# A Travis CI configuration file.

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: "Mtp7/aW/Vm72igAQnwRuahi8JG5YYCPlZM9ZvJZ72F8/QjVpM954MS3dkex5jrZzTmTSaTjwT7ULOBu5MujbEuDNAy+bDypzkJYg2zUNkdORe59K19zmbnT/hrHj6rxWW/TDc9jcaZKAUQmKV+ozW06ym1ah7srtPN8/iFlfrX2g0OofmTdddIoyirggW3RLRMEH5ndc/sTVtyKGooBiC6GzV+VpJfJf6oyrkZJusVp4mhG82gaKyxfxxCmQ5eFWkVAlG7msO6lUq+q0XDm7k1HlRF0y9OuiSVwN8YJUz+q5jpt1oEHgAkOrYijKUf0yuMRytcu/gJXE8CIOrV+jl2WdUAzhP1btCy1hJqxddcAxnzAKuc2cHzxdDafztYvh6KfArsrPW6nMMuvBfiO0Vl4LOPAw9AzbZ74dU78ieTOvjPOIXreS+PUomr9MZ36QW1unQXvnryyTQCS/QisIMnSg2w9otolfwfSOTo91OUPMDxrqLfZLKOLaT2u9uFar8q+VCKC1WI90plVw4h6ZglDqH/l/4i+ZNti6sW7/fSJKLG7e8Yb73ofJ/nkZ/GsvyxS1xH9KZygYQmxJSr9g0T/d3tG4Y8bZe7ud/8Sv4W8cgbrITNcXAuIEMACbUAkB41CO7bR+qhYhQSVo4kRbQkmWAEdtBItMl7gpjyOA+jE="

env:
  global:
    - LUA=lua5.1
    - secure: "NMt6som4aleGmK3Cqp4a1ALZVV4Vqqg47zcDSgnnD8WAMsmeINf0IYvs9rKfa9BPIO923PS/UyWFrFHXsAmCWuepWCT6/p95H9puVLcQb+vXGMUmLzHVo5fIEjGebtdaOj7ltL1+S/gJ5kJH8VS8U3UqT4Plhm1ljlwPneR4mDdy4utq8CdzCNMsOD+iuUMbXa/IbVzn0v+ICJ/RcsuVGEafTeVOJyhtiRtEVRIQhpXQh/0pK1OnngJ4dUFTWq5uWDBvMsk36Z2QO8n/iKPrXtPvq7AkUJFoha9LGEl0hqGXXW1h3xjBgg8nMOiQ/rh997y/G9f9XecCP+AzYKXokFVW+YL8jxorg2acB6kwczri0iBlAy2wACdJUxObX4TodJYRCOri1CdVV+pu5S3aKw9uBpGUGexz4Pus4sczmIa2dwj6K8OayQ+OwXlNKaxZPq7j/iSl1xTZdn+KbRhZ33ozTZw5m7n3vuWB9sB7N3DBuZfxbR9yWJjO7c97Y9Fy0arbQDNaXe25gutKy4IZWoVqLQJN4UBgAnD1U0rScOidvZSPy53458LaVD1jd58dwHt6u6//svkEVwHyH6PwJqaMw557c8CjpzsMVOvRqCP0BX9iSObrYPkXB4RZX/CaLXtIG5d2Q8oVyAzSXGAy8guqyx8Z/Ud9wVFP+enNxss="
    - secure: "cypBIOF/sYjozu6gavAbXa/fA9NOA03ghZeLn0FVsvT5A2GE8DdttFOM+Cpu1fnaLuMOZxw2/T9uS2funnRlQjSK2X2D4DUjmxMDwOU+Z3STKyJstPzDxGIv1umw2FSG6Bjlt+thwKf5uOD07NtBmrZQgSx/M/2sKZcYiCfY6oOSX/J9zIt1QSmw6+SYKziUfu0HQOTr4jo3Z9pZ9zph5R4D2Y94cVqFo00vd2LZG30Grncf3QG2O9Qg8m/auXq9CzumzRarddXPsaNoyf0TOlagNOEuUtlxDi2pzbpDtc0AxPqVvaBi1m+6J472atk+CIAooa+8V9euZPdoVEFgBJorLvHzY6n3YJZNex621WJtQ/LCF5LvrRkl4262tr4dx3o2SMHILebm5QEd191iXIJcrBAXmWXId0tIUP2Uk1xzlcNgLu8qO73n/atGgaN5KNAUjJmLviIt1Unk8xoo8U5vNkgJqeIXRRt/Gp1Adl9G/ziAZzRPwK9O2h7pCBuRtqnnQjPU1v/OoVAnhPP0DodJRKWeJ2y9rv9fvlohAHov/Lak0BYDkYYM73MkQGiiEidEjs5mkA9skhqGHsN2wppolM0zXR1+gSDsRjW7HAvp6llWQsBJZ7Ly40Rv6ZHiEr4nGdxPAAv1wj1TrphxLHsNMYZVDurJ+OMNVNM3+Kc="

before_install:
  - ./tools/travis/scan.sh
  - ./tools/travis/setup.sh
#  - source ./tools/travis/setenv_lua.sh

script:
   - echo "tests disabled"
#  - ./tools/lua-releng -L -e scripts/lua/**/*.lua
#  - make test
#  - ./tools/travis/build.sh

deploy:
  # deploy nightly
  - provider: script
    script: ./tools/travis/deploy.sh openwhisk apigateway nightly
    on:
      branch: master
  # deploy tag
  - provider: script
    script: ./tools/travis/deploy.sh openwhisk apigateway $TRAVIS_TAG
    on:
      tags: true
      all_branches: true
