#
# 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:
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: "pbZEezFpR0lM2xakTVWEd0Lkx4QMBSdcrZBrvpXSVc55rmWTghOvzz0Rie4zlRO8M1QH5vSwGHxwbkGSog0i4DF7rSIY9yIRd4wDb3r2V4zNEhgWHwUznkxUsH/nNgnpB8MVegezOldWCmct2KC+eg/K/zGyzYXX+ZhVR8niu+FZsWYgC/K/TblldNzdKEk3PzeYFgHmxBVOeIOXkXyTnqpBzPotgFQ+pLAeUgghVtGnOii2z6PYLj0OHS0Si6sq5BfZ19FFGOIBbqbyiSCp4bvCn04r979ZgTJENF+4F/r7zN5B+FDk03bBsqr5XnWT7L7E35RqWYWK1jkbi4VFLJ5gc9tzIKhzU4xHlsuF8ZvH29NqAvRWoGflKyCBMaXV6RaSlfWUmQ8tBXLXa4ORcJHpzB8JPiADWjy47gfxlK9kz/T+yN9FsYTU9uaKnb82c8Re0x+7gxLyvcVFEBrvfgb7nAblEzjGIptPh+SkroWpWrwPKVYZXTvrqpZZL+aqN3q6x7ynt81qYA0BK6Z2GMvuLJKraTQGxFi3JyCvoiXrd72unK53borxkFWWhG2YCwnduMJIfek9AbVYAFI9DRDFL8kPP1tnACoDo5OMxofDQnP9iBnWpKwHNVLDqOwfOY97iYDhp/cyCQYELtFweV3doSTVGnl8goWCFWNmmyA="

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 ${TRAVIS_TAG%@*} ${TRAVIS_TAG##*@}"
  on:
    tags: true
    all_branches: true
    repo: apache/openwhisk-runtime-rust
- provider: script
  skip_cleanup: true
  script: "./tools/travis/publish.sh openwhisk rust1.34 nightly"
  on:
    branch: master
    repo: apache/openwhisk-runtime-rust
env:
  global:
  - secure: 0Zk7istlUWhzCAMQvNSYEewgQmOF4uexJH/yh+35sifvX60tM2Hpq2ieZCgvTNgLhHPZmEJnRxldAgWGnwax4ROQyzJR+Qbu481KatwPEw5j+PpBP1rFUA5evYJC7gCG1INffliji0yd6WyoUMlwasMEyeyaqfRmdw3W4wMUXF/z1ya6cgAR9HxKegiOxtp4qjeFGk5PcyfxY5PoWroLeE3gpr5mjb7KoW6UzkkSlhJEsI9iMHyoUTln9ZTsLmBiGCmWC1cp6vaKq/K0t1p4bFm5Hg0vJMbb230jcdP9NyvLJJd9UX2eH0G/ER+QzkSM94OQwhQjTzPppC6YAluxUg5ZYr+Ik5ASHXc4WJXag4MRIrur24d60YI0iwodZe05c8ZA/Ksj41RscrbMBv3tIxDalJtY8DNfdfSL3qP3vZEFPyyAIs9jpUm36nY+VYlW0rP2AiEQNcv7rNNGCLqKVQnlbVR4ccCYbQovcjghzpkuL2A2zFqD4XScU2uj4bJF8HxB/LQCYrSXYUUh11+PE05idTH9X4+JE03Yal2qoX2Tn+a5HO3mkwSEjJ+M8QTuiB1kPLn7CnfPYJNsC28ZFP4HpfhpygWfAIFQmTQoqDGi6q4zi81LcYFeWnz+0wE+XqqoB6C4OwsTA6gM+bTR67mpibOPLSQ2paIRJdl+Gnk=
  - secure: wwxICr/9NXNF1xTijUW2187d/EuHsjN6QhFW0wkF8hoJALl5MYvJ5FAfInPHchcZaiqt8p9fAgcnNaUiQ4jDmDomDVDQUzxw/Vkr3jOPleM/qeL7RJUHWXnBgKbEU2R89HWPSBCc2KUcyGihJcjPGs9banx41heiTDteXIq/P/+bmOjn3DW4wuazTum3fpZD3r/GE/1zhJN3WvGGJoei2BypSI41FXVdrl5kdkQGWU/XFPhV6ER6G8Y2OIPx/9iOpy8mvhKBDR5HKelDz5xTDUYn5c8V7/Mi5IyXWVzDPFovurlN3pf9Mkqyf0Pc5uGgy9UU+Lkq/PsA/jXaRKq3tJm5idD2VuAAGQpyPh0RHKdckX2xM551q1sWr4UVgFPBtCumguRi8jXBRQh4BkxJWm5UaHJh/i6eN634d/qUGJKw0sktWYFOkoY2mebkMMfFhu1a0dPzBB2D8uqRv/7oLDgx16RI4eGCmSIydBm27L+qQ11mS1chmORpoH/1MQM13zntIcZkBhRvZ63GgehABGGUHnYyGZAhhbsWXiW1Yipc+hZ4KJG+99KY5lZRbaCOKR+4u8xfsXr03JL+dELlQDDJkpWoY12Nyq6HdCovAFa8Y/hxut77UUQw71hOrg20AfzRX8tPI5ogb2m/LnTIxJ/nM13Lt02M2VEs+Oqm5hg=
