#
# 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: "ctMnLe2U0ImSvrBk/O0/HvfmN4vY97VHLwAEtrM/3pGKFTRG6dEj+y/7ogyYBAIocvEvIzr/A4EwQPnVqtjcohCU0B6KQDSCiQludxRIUDRooA3q794eX4CSSmqcifBWCY/9Oj+qkbHl+FPKmuyqOA/EpZRTHuZldK3e5CAh4a1SYJf3EaXSx74+SUoXAzLJfi1lejm6WT0gj+bHuAQRnNE9c5NW+eYTDd1GOqf05BbHbhuN7pEIzAnCB1nUDaw8yCchvK5+B65uud/BDwt63d0tvPhIyrlvS87FFCEhWPESGlC3fRLfqDi+H8dwcR9Ryk/RwX6y+D23yFHmAr60c2ARIUEssjmF5Pi4SZI+cRU+W0XlrN8nkaXMwMa3qtpzorUQe3kJr/jLy6em+06493H+wrgh6HxziMrBRFAD4T2kRgoFybAtbZxka2c2jbSSWUNrWsG/Siuvkq0GOk/pykEKU/ZSxxO0TyKimBx8qjfsJ78O0qkBKQ705MxrqzWve5smqxweXZywk+iP+kg3jwgLf2iyRGLs8zCw91gc5oVr5Z0D/rJ+7mxiykUc4iclWdm++SjsRVp0TCTAv8SzgslFGeHvBk8WmeHmxLGJhLfWWUc9HKrqRJlCldozNRmjPHQDkd085O5G+oaQLL5z2x87DkiM3pfjZDjgFuNHX7A="

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
