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

language: node_js
node_js:
- '10'
- '12'
- '14'
sudo: required
services:
- docker

notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: "ovQJRc9+y4NDh3kR0Pfay7DaS9XNVf2GrdClxWEC8lqHA/zSYRSocm9TEiOKsEyfhcyeH00PlZzqowJdIF+FxWaaguftSutlWGh5RS430T3R9fRH2cnawZul3tUJArkHjkbQKB3Rbyrtw0AUalnaO/FSTygIqQcJN/HoUPY+cBdMtueqRBiTaEBYkFivfbrFNXRHHf7/3c1pVbJWeZNhULz6dmtqr/t4glQs0cy4HZLL5uMM4VrojYYlBoXOQaK6SsizrN0TL0eolqbp/5Vd8dApFYIPRjZ1QaIx07NoAhy6tjVi0WR9PVi/kOwKUgRlAkOjn53Og7ToNO6sgkExjiMdBxfclmO4pc7JoUPxz22b6adzK0JoOp422ZJMnaKWHyg7ruFxCtWTCa448BDSyMT07Ei8yhPxRVwY73iVMSj4foonTCXVMCzPZP0Vt79xyu04A4hjtkBLaLbwouLElOxqWpZymnj7VNNWeTlfjkKfEezjl08jQrmCKD63ASwgKALg/FXV2+gffa140MkQnnXC8Np8pZNYSrc5FwiLk2VrY382MLF9c4N7GlbG4WvR416QqvFy354FNeaXcps04JLeCjIovaVF9qnDzfjlkVWfMs+o6rvhV89M79HAK6vEpe2X563RW8QJt15pqGReyNe3LnKRJDrympuF73XVKDQ="

before_install:
- cd $TRAVIS_BUILD_DIR
install:
- "./tools/travis/setupscan.sh"
- cd $TRAVIS_BUILD_DIR
- "./tools/travis/setup.sh"
- cd $TRAVIS_BUILD_DIR
script:
- "./tools/travis/scancode.sh"
- cd $TRAVIS_BUILD_DIR
- "./tools/travis/build.sh"
