#
# 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
group: deprecated-2017Q3
language: scala
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
