#
# 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
language: go
go:
  - "1.15.13"
services:
  - docker

notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: "oucv10cFn2nM5XpwIRY0xbJw0m7gkFABFUD/wj4oubpO64yjeY/RUHkYXNHXKESd6ME9TngdmvkjCdetMTKK1wo/jUbSh6wGxn1ND4f3E9ds/6PS4gbMEDdKQWt/VKqXHtx3vUKDrvPvTNv9CDZ6lfBA5SNcN4E2gIoiORaX73CrPhA3tFTgPG2+ESi31/QstMaomAszyPGvYwDSdCALk0qsdjxJgpUzIm11vj5gPD5PPTnJBsAg0yC52WTOTYtORoEJUuhBXVwEpoZ5qPOusoHzFqq6BXsIU6zPEXSkHXcyCxYGY7V4P+FkAtteOBqMFALpv+klVTRVlOjwiRSSeUD45N1+fBnCgYSXLIPJunRyj1epsDSepTpOBlw1MWZ4LzfGw8897wdS2oZXju9adS5Wv2f7VksaA3meuYrZ3ohSKVRdeUfZwEh29E9rUQTYyffzmn9Sh6TDjObUbZlhhdXRPjzwB6FoAcuMKFvRK0Sliwhzo2qZ6Tzuo8rBt+U74YnHlFzYwFF8kSsm+jAq8lxMGmKDdFFvUASxp5bAG6ZfSHVvQKD143T164en4E41mlWTjIDKInSe85d12uX6ziIpbEpkHMWvA5+8s9eIc95E0FQpAp6SG/ZeM0TJqAS10JS1gfWZ+PDJwCk9mUogJ4JVQP4ccT7zqUXVnEKo33U="

before_install:
  - "./tools/travis/setup.sh"
install: true
script:
  - "./tools/travis/scan.sh && ./tools/travis/build.sh && ./tools/travis/test.sh"
after_failure: cat .gogradle/reports/test/index.html
deploy:
  - provider: script
    skip_cleanup: true
    script: "./tools/travis/publish.sh openwhisk ${TRAVIS_TAG%@*} ${TRAVIS_TAG##*@}"
    on:
      tags: true
      all_branches: true
      repo: apache/openwhisk-runtime-go
  - provider: script
    skip_cleanup: true
    script: "./tools/travis/publish.sh openwhisk actionloop nightly"
    on:
      branch: master
      repo: apache/openwhisk-runtime-go
  - provider: script
    skip_cleanup: true
    script: "./tools/travis/publish.sh openwhisk 1.13 nightly && ./tools/travis/publish.sh openwhisk 1.15 nightly"
    on:
      branch: master
      repo: apache/openwhisk-runtime-go
env:
  global:
    - secure: GNKMZjEW1BKBb8NSiFB/Bogh0V5co5TefLLaj9oYJrKCP8rheFY4mWwINR74dYwSFIVmBhuuwZCm62zZwzb2TTivjQihOwU9SeTaUvJHlcLu6j1T/gTcMX5dkDOrdzqZaKoU5NpMbvad1fnDfEG9oU/VE7fARAxziZ2yBXOGkt2p2whkGXrs43gMyRKJv7ytUwpjvzhD48hJHgn0Eq6EwVIYxO5gJfGAhiA0ucH75c3jI4yEz7sw7SaoFxAQRL7VICaTH8JI+tKWU673HCclIRiPeZWQ23rI/f3MV8SNTKJm0GtnjM8LA9uC96qV6f5aXMn1EdaMGoCQbR9jBeqZG7pq8O2QHA/1eNNDw5sCISS05plCJ2yz/G4PUndnuToKm/sx6/qbdRA3QzTrNQfwTTcuUi+j4mYEFANgT774CeGdnajfNy4cZoeVEFmBTXdi5V1DuFLujSQrzRSHddHHUQXGUMaz4qv5R8g2aQNNJzYfknGwG0AbqCKld5j3VNtrjpiUqPAHmAi2O1/4gNd5dM42h4ARNnX4S8M/SPqWmzTAbtXaLcJIKxsyh9Xb1FINiCDsLNiuYWHb2QIjnuiXXgQvy/F1FAn231hJOYq1p6gA0QT/WBaAE77yfDR6EKmvaoBfqUuFQgfjwDH9hdsBiPb9U1jS/74yJqMBFiyW0nU=
    - secure: sdSLUbg6ZkZiSO/gytXd83IpJ3TD2KeFWMP60VwadEPBDJf88Wju1S9xlHSan+gOgX5wU8S5Az1wfi1njGKZTmxNHgXa/LgCgJvmdoKPIHsJld5A38tvK3t1qeOzrM7UpzwdqqrEt+Xl6AlxCE82293IznOgCWaaLfBc5TawCThTLGZ2XSQYbZj4Uh12twCsKIUvnHV0Kr2wHRrSDGq6r2VSniHk8w66QMNOBu6V6zxYXKNhJpoRBU6X8vMGsn9GDNr6PG1GnO0oZGDQn/dJMxUK/QAgeskVHptX8Fytnzyri6vut0JPiMbT8AtolOxzjv/7KcqhO0YdxjVy+/3sTLpCRM0zfcx8q9RbufNiBTuERDrUYb8EKqHyX4QNJEVpf+oImNsKw/8ry991OdhrG9cyzXNT+0/oS5U7C/F7gS7nqb/kjBP+qJ+6AwdnOU1re5brv7BkH9Rj6d6tVLfSG35gRXAuwoouh6iXgXDiPu5dLNWzwazyEiIw2Pr10QWdZGJ7EwqJiPdw640wevfk8WQiwkCyduyII6OYMdZUwAjEDP4sehHoP61WPz2k8ollfiUIoTjzRrF9eO0Ni0qnz0/lBUw9zSpMZbD46KG5v/29dRLrvj9NYNAUx2KU57O080gZxIBgp1eI3WOX/Imia1phsZkP4Q7wtID03UOsiPs=
