#
# 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
services:
- docker

notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: "ZKtt0UMa1uskgtOYSfFvTXyxkoEm/BNmByFgzSfnJm5sTPjfPtFe35x5/nu4tyk8QWBMBeSpyXsdOoxLOrECniWA0SjVPrR0F2wHmTCU1vHBkuBR6tHByOSl22bqmPVPaBEwXxbubBFwVBPvZ6+T+CASC3GlGDNxLm9wOA51DT8zHXM1TkBB8oU0QqiEPS71rHfDX3XsXQoq4jJqcJdLqBloZSbF+l5XD6VKAt22+Lh9kWkLRt7lUDYr3gKkwlDp5tN1AC2Suhzw9Dk5G+OGBpnEX4DTBjpDWu2m8N2Md7eIia9gfpJtOjaJR2M2H2VmllIGJfqy6IGR+TV7ihYTT221+AkaY+oAwRelP+ZQgkkNg7+EzL2+UbB4u/91db8JGxsKpO3BXsgjp22RsiDuEdejpBTQ0pAMhcJrIeQqJ4jmBAdAWLCvi4eDEXNu0uKggKHsI72SiOsh13cDiyDNG0jv7AF9myCr5H/PtCXtVnGz8sWE/js7BcWvQysKMRKsS/y4FFBWya13uzZl7kcmFrKYI9PWnwwNYzHv5idbVK61PwhysA4HzfyR/OMjyCkztKpck/cqTS6lAJs2NL8vfy4GhKfDj4HKeR370yHffmZ6sSYUpOVcCSGN8MhEp6QnY3A+DAk9gLfzlA3iVhJy83UkfGkDQVwxo4GgmYHe/Iw="

before_install:
- "./tools/travis/setup.sh"

install: true
script:
- "./tools/travis/scan.sh && ./tools/travis/build.sh && ./tools/travis/test.sh"

deploy:
- provider: script
  skip_cleanup: true
  script: "./tools/travis/publish.sh openwhisk deno1.3.0 ${TRAVIS_TAG}"
  on:
    tags: true
    all_branches: true
    repo: apache/openwhisk-runtime-deno
- provider: script
  skip_cleanup: true
  script: "./tools/travis/publish.sh openwhisk deno1.3.0 nightly"
  on:
    branch: dev
    repo: apache/openwhisk-runtime-deno
