#
# 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
group: deprecated-2017Q3
language: scala
scala:
   - 2.12.7
services:
- docker
notifications:
  email: false
  webhooks:
    urls:
      # travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
      secure: y6caEKjRnby723P1W8Rup+yioJRBV1YmqwGEEgPxNu9YGdef0m7TO8fp1BZaa/hHErYzYrfvOo3gwXBB7lkmZ9p1NfF/Cb5bjy5UwSx+EFaEjugFIoCCg+xPPTS4SM24+bXljiFZd7ZZGXu4beGdcgxmYsufRQoWJBF4Itcr424wEw+fSrPPknAotgAXjUyOOmr/xHng50mFqyfal1miR9vOiX1y/cdeAmaCmuagv20ry0ZpnOyMYCdH0LtWIDAxSDn/GTXBAwLBy2Wn05uE+Yqh6EI7xRvYBtT0PfaBFwb28pmkArYG9ZpXB8cwUhuLQZ51zFt0uHMetzlThbw6pO0X9FzGcT/BBlUaZbUaY6zar8FkRzija72HLKOY/yAN8VkhGlDOz2RSI3Tw05vep4Y7ZVRF9/wW0KnKB68VMJuwCbzgtCvWpgRXbxxLcKvKYsBVnkcWY/fwMxG5q8gQ2ZELf65975MVMn/oejwAcJkP2EOBBFpHGsWvEwNV4ymTD00XX1qeebfYQYTsxUOEUFrvu3p4GgqI2MQksgWusGaHaOTG0XHZ7afbZ+4EdPA098rPFaIcnq5E8PVZ+IRzn+5aupAqXy/tY0i4V1U7H4rtF+6u3PJpAIcgVo03wmzNcnsw0rVcAqKbIxn/oyMaIaGtb1VaKYQZJ4t4CCo0cEo=
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/incubator-openwhisk-runtime-dotnet
- provider: script
  script: "./tools/travis/publish.sh openwhisk 2.2 latest"
  on:
    branch: master
    repo: apache/incubator-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=
