#
# 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
dist: xenial
jdk: openjdk8
language: java
services:
- docker

notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: "sHbOOe7/GW3+gf4OSfG7jvG7sAuPGZROjBq5qCxMsLAA9sPLHXYlYNQOt4yCjSVQPaBkwvPDkQf317ED31l3Z+ae1TQO2Mo+XTpLmVs1fb4Ay6388rgxHwim1VkwTxcB2Kj6aTL9lLnZtxELOS3xkkfrzNg54Y+1pJzPaIzlpddqzfVwyI/c7xPJj6r75CvJRGEiyZ50ZK1uuppInvyXaSxeSmZT932mPelCR2fR9LFYfSpb/9l65OXKDR9MFiTYS8fWQP5Ce1KxI9Fv1t2Y9v7D0Op0fWh9UBEPD/qLuahvRKqqqO4GorOVbhISBfu5v/7kw5jPwzVzb1ywndxb4Jx/TZ+VnVYmP3VIPwztocMvbf8Sk6SjHQcxeoeya6I3XKpm8pnUZ03RgLHneXSex6lgs/24tQUgLNWJV2PuoDKPBWiPu7q1JaovXObL7sBw/fyhmkhA8kOEpJ02jtfMsBWSPwlOJkzDQMojQ1jFfJaoNwxW+cbqijgEwdLmGVP33aVrJ4dmwxKHPwtxit/VFgCnYcaPtBztTL6Zs4TrFQ6ruBlGTu4uPiQabJRMT8BFtDkAb75oGRYUstamc9aMPQLImS6oAy4g9tVci5cnovBiWb6ySaw04aPxeYoHG6G3KwmOiT878C2rQhk2jizp2SVzWmH9GWMgpX4+kZ8oy8k="

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/openwhisk-runtime-dotnet
- provider: script
  script: "./tools/travis/publish.sh openwhisk 2.2 nightly && ./tools/travis/publish.sh openwhisk 3.1 nightly"
  on:
    branch: master
    repo: apache/openwhisk-runtime-dotnet
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=
  - secure: rouRBDS18tqR2nkOyR1PVJrVBlpKrjq9LlwFMYuVmL/NqrPNaEMENvwm0aCbfbaJKz9TlyceAphSXj0uyloEe5bqxl0ZhagLkWLyCCwTZTVhFDsZ0R0s9k9rthWDQ2kC5BBwWsCejy5grg7yYU1I7Xkhwzj1iM7TRp3Tp1PJSHsWBYd44TzBStMAZOc+9IsywBjaeyvwZN3j3eLXjHrsej/8l16pu1IjtMZmrz+0M6Cp4qOMTGwXHcwLw1TpwQuQZw4Jvi6TlvIPgkY83Pt0oO7TIF46W6O6OjhKrgHEFfy0nu2JwKYT7kbFTlbLlXLj3OBJhwdXz8G1qJ3IHayd7rxF7gj2ToYFrv8ms2Q4IqRM1bDSm9TeC0nlbgpUSWDT6fzvJXE18KW5/YJVern1Q8fU2ejfpTdmDdWjOOaZZzDFfdog5kcOFVQOPHBT45Lklga/rY3lNMRtx9sJUMYfdR3obnBRmW6nQu8mRd5JHX1EROVjEHW9tnLvDQow6tbs6x1LMwM0oOvs99cPqE2NrhRJPU8/eLMg3Lxiz3cqm/oYhQlP30CO6ynCIM6Jxpj+Xpn28YM6GfET0qzNHmxkWS+oNUjO2NJNddyvE/W2qDGuUQYrJxTIiKVFsFXWIoaurnCWr20jdCLUY0MBpb9vIRK0lcrgWkrIH7WIOMeJcgI=
  - secure: QIfsMObT4b1K2l/xsUAI4MqyCorEJMu0zgmMZnoms878e9You6VClexEOuQNJhWX1lzhRJdX+a6jkkWOz1aMbI1iDjt/rjEZuciHpv0KHqQ2xHlkg1v56Y8WOSOSrc5XHtwe9auw9owbaYyc0XuuubhtdJMv6/oCSSPSNKOT2wmGTkqbJtKZ4ToFphCwMKErhe3pbbIqZ51hbZDUuZ0N3kZKXKQoQBBVlVGi/2/YqUq03j4D8HHyvs2EoZD/H/DOLy+QA/i067ZSC7ahRZwsabWNfbB99yVaN1VmFAZXCasQ4WdP2Wo3Qm1+cUT5G7wiZDVtoRArhVZ+29qd3xSuHmHw87E8Uay6RjbwBYqxh4jxdj1QDfEpH3XbhxW5FxvgiI9twiMc7gANj5AMVyvuQPwX+P2rk44s8TpTBaOZ5qN4ys6VMX6HPpLsJ7yQBVd94O7jrDrKC3anp/0Hfa5SB1wFExlbQM9NYQwbyvr0oldgexTepOx62ZSRUKW4jtmxJglcuGvZOy39WB8LfcmokVFxkZvSsfmmjpgIO8pyjeQx19sLeSn37zYr7SgVFMgaFQQLqHoeCHnzpUUkrg6ITFm7+Irf3K7QOkHe4rNnKT0Vh2WCqIr+aYP2rGEDOTvxsOqWI4vSnMX259H+hIK5wV5Xond9ke2g7WHU9fvT+eY=
