#
# 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: "Mn8zSyG5OUx7lUAgqUKfNT5MpoXFHJK4eO6ZM7c6b/SVNs1W0TjXeOT6YfkqVFNbamXdX68hSxjvarpdw9Zkdt/pDRk2kr+oSvlG2+kzHz6Amx4CuyIQsCSDogsPhaKyiyjg5fCeSSnYL+P7O3+9StS0XTV3bUeSERMi9L2NezzwfjDpkNL+CBJuPNQC/nfVMo0xphVdO9/kSoftL4gjWdtsIEKgY3Qre4c6KfNjKfwlmIJL/QCJqC0Wt3C+zy/IzvvdhYJEPGCoZRknvdWr0VziHl3z8L+EqUH9uO0TIdFSHUjjv+BU7rnT5C17IObRUbw3gBTz8cioKqIGbRCDaUrtN67LvHcsF6bnjG4mam/aCwKreMe3u8coK4tvDDQQcn3mNXANJtXliNLYEDjcNqgBuOFWSfvhHi0+ux1hIufnRQhNoYhym9cyDelmCbe8+3O8TIvGW15oKYCHFuod/I8M3qCDq5nG0q6gpM7j2rNv+56XjJETcbcXAVWlLqztvtHtPXibjaWChlGZG9fM29AfH2fKCmDGzx0C1BiX6mxxnFRFBwVWOYf6p16lr3Zl3DXS6vS9F0fESf5tBKWeMYDdPe4Gi8NGqfURKVfr3t0JAturgJImyLs2L8NqpaiTMnOBgZrfR9Z5gpSuqd14TTM6NTF0e2UHhl0ce6VYbMI="

env:
  global:
    - secure: "cCDd/PfYpC5ndxwF/Tl3UUvYIQblPk2iugGIOO7RB0/iufrncn2vtmpo+CdVFS59bs5IpgNGj/gXcmilcQSMo4yuIXe1QGtUNp5oYtVg8/GALfpLsOawYfZ7Zz9oYhstz06R5epoCGJtzoQAwr9A8+o9W4gaDrHzVBiF1eNIYlyM3aDXfM3IiL5R2/DTWYhLqdKMFTPcx1us3EeAFJYS+ho2EAsxJI6o3kPdESzjhTOtksbetjzB2rWXyRCaRtpMsJXKTk5IhWJCi6/EsdAcy//HOUsUimWZHjgbZnRn5rOo5E4e324lIrzWPS9B9pETGm/jRsGmUso3FNfxBwEOi9Lp14InmpmiMOPXcAOAhPltizrrA/AYKrvzWdVQEMsylbkXYnEVTNKHx526x2dVl7sa8rrBjzpOUxnztsmfUlV4zsetCoubPg6beOQQ05wuiOm6omrxJ7RPrDB+Fi93wkzJEFjUASb/ogy9vYhTaUez8OCUzPLmPQDRwmY9fsnIl2nBpcZFsTXAu8nhPvrhezNYy7NfTxvglHPYuOqGRp+1AN8LNO6jHpGdd6rW1bWdAqjacwBsvdl6lNZeFSxcVzL67iViURiauMRQUnt/uJl6qMYotw57y5jhaitigmLl+J6k1Ab8shl3Vm8WCBab7FLDyrc7giobHZjYhcSOdJw="
    - secure: "jyY98VXK7W8vKEBx0/JTGOI0Xi0yPqFK7/SFG9j/iz0hgAeKrmXm1HJV6Cci1mpcEPhBqILYNuJGvFuyUWy1is0UCoVHtfrCbMon3Lh3pQarMEWbjjzdB6m51wogm+5ciDNBeQV9Eu4nhQfj3Yb6yu38utIcbAqhuVgM4E0iepuZYK9qkII2caoXnv2kO8RKggzSBarIT4jPvGlY30eejrEvAVRkvQBcgDIUaSX7XrpQCdry6fYwL0fO7hrOd90Q49FLPOkOtyMAQ69p2P8oc8JkZdyH59MPOqpgWszc9kiy7R4CKMCX1X1QAxiwFd84jsMi71kKbnyKtsD54H5Tmj3Ai6+Epzgd6Ey6JFycSQbWWsr16XV5e5wMUpXDMrY8vlmVIcikdVWFvRTR5pmWxAPq0Cx8PvxkCpDE31pevyEFRmbLqb4BxGN4LH1dUBL0bwknrALehSuJAS06M53284HUF0fiCSgY63E+sp+HyK1Y6R9qZeUXftxEGH0vovWYJ94NsqWa/+g4vGeFfhKPbnlK4+gVsTAHV1IRzCLIYTqdY/pFLoYyu6ZSVAvKzRRgyCerN48AUF4nTPuQtukU9d724Z6ZPsWi2i63HHsrDidqbnBWdbSFq9iljjbrGc23OWrDY3QwhHKcPn3Vn7WKuZcx71+Z/7GWLWaV4kGAHGg="

before_install:
  - npm conf set strict-ssl false
  - ./tools/travis/setup.sh

install: true

script:
  - ./tools/travis/build.sh

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