#
# 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: "uCb2cZQRl1aJzdzQvI5acERfxqnQMQHwQn1eq/Vm6aD9yHLZBdYJ+g6Uj6a6QtVo/AodNsyQvj3MtcOEIim5ZyC8UTVISEAo7QmtwPdjLuH7mC57jFY48RPTJ7GUdpxUkwF2hVK4VtM3mF1nWeKUaLOdgu80EV4yLqLfTsLPsH45GLxnZ4+lF95ofYRTUDg3gZ34PoHxzMZkOStRHRmN3ceRmlUkfWanWqBx2MsU80D7hf7JIRjOdXRw3hyrjyRiF5c0mAprh9R7J4i9BdM5dyI0UfDXZ13afS9w9wRpvO4LQZ2F3NyhbK+Dn0V9kXEuY+gQJnDJOrz+pyKjQxpIgQ/I9jP6OizUt+4lWJ9c9IxPVSAoMllQuww5LFHcL6Ch10aVn1iqo/VeLyvZUZoqrvNRNwXR4RyAaQ3NrNIo1HVK56LIsBtq3i6ePFwJJHcI9cL5opqTUec4VFFTivNC5Jo+pSOYkYEzk+eXacIMYUPd0T0AlzR4ZbH1BDcZuDjZpb+jbJdHzTPYlYCtyGUyFMm7hqrDsO4VTLYbl3f6ZutgODM1/IycDJ99Y3620n8dFXLjiIZCkvmJIKjMrmWoPWdSfKFcxL/jfdcvyue3j+tOPnCWwJFqoJPH+4N+8B+QG1SQGURrZ0sqFZcTrbDA4jzv1fHZJMe9Omh75wkHf7k="

before_install:
  - "./tools/travis/setup.sh"
install: true
script:
  - "./tools/travis/build.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/incubator-openwhisk-runtime-nodejs
  - provider: script
    script: "./tools/travis/publish.sh openwhisk 6 latest && ./tools/travis/publish.sh openwhisk 8 latest"
    on:
      branch: master
      repo: apache/incubator-openwhisk-runtime-nodejs

env:
  global:
  - secure: Y1ldwIQ6bc3/3Pc0E+qQ6K2M830B9BObYDlsNilPwF/kak3YSfF7SuXuRbJGjTdhH2KOotZD2CwONgP2yvOSPBToC/HpnXYfAGtgblrxQORvgdik88CFWa3Lli1pwlpdzKQNWhBvglzq+IIS98wqzmwqGr8zKA+Iau2ByHdb1j3M9rrIY9V6oU9Gwim1apcRyfI/as3+QfPtt8BUAl2U7+PprxwJigyF/mcZnBJbd7IjrilE2gldZLxKlBiffoKVBinrEg3IQGJPt6k8riw264pBQEpcA0ZBsPUvMaISSxLb+d1ymp3WsiTJUjv+URR/HcdDa7P9jY+ouc8PQz4Yt+Ii38lM2tQU480APfVTyfj6drkjL/+54mYuxm8TzkBWcM2j6/FYT+8HvK/pF35wDJ3El+jGq7BARXg8HVxFsZgynJnhqhWDQb3xX9fK+N4K8+ct+HlsOSa5mP5i5Yo6WRTrWrFpyxVnv9crKePCiYqA2Y8ta8Wnh0sM06nLRtDbfbDjvXPQbaZqSnL4B2Cto08YoT/W/lu8QgJ3EEFlUdDOke4kv9yoXtuE0h7+8dwOvBNMVrBis3G2EYObgR4WmWjk4loYhqT9h3jrH0/5bGLzSKc++qYW0rOZ/RB21cRSe1ILQvSzWkImUoPI8b0i5baGSDq3EjTXYr3pIXSYpQk=
  - secure: DOg+FgllLbyv7nEK3JJZfO/cvXy5K0L6QI/S9EJ/ivm4XBDCw1ayhrSQXvp1tMTPbWBEIv2gomPsHghJ+hVvX3dgwYdoNz9WZaNBB6lOO9U8OQW0LBsO5Eai6grzqOP35OuKtthuyR3dGJHAZo/XjhZM/jL0z6q1kNDzdS7ASwRwHJG0rHPGVlGeolH4nAity4KNJvyAspS1FYaIj9FEC/M7UT6nJVACbr9iMt/83teF/Oo2uoFI6Pa4K3nE2NViVFibToNOM3CV8kArDPDoNJviXxQ07ZM6fNijwehZ80waiPSaxFY8PLSntQNxGyB3DbomSTCcdVvtuHHQVmZgpVdvOJE8wk3R09+nq9U9FuUWLiRYSRbF1eF48YFnssPW1jEeVSenFRADcQ37e4B21ssLvXRHpQHpPVrYBZ8ffDamS7pKtEqocX/3Syc6irxHGCpxEdhvQ0Of5AWHhzB714VCijJJQiH9J4hEKXhMeAZ5SSt4eUavEHJKMhUcJ/aaku5w1+KtiYeOso1fTRbTYkEYb1A0bSNdXlGrYRRT+N683W7+ENiQIT+hTp617L/m5WQLIHfKe3gy5qt46kHFiUL3R3YlBI5OKjnLkDnUiA+0d4SFtJC/TBuPmH1fG4isAuvggTjzCb3kUG3ysin8AW0AKaXW0eqjKa/nsHWDKmc=
