blob: 93568a3bc02c91b90590798640685ec2fd56386c [file] [log] [blame]
#
# 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
matrix:
include:
- os: linux
sudo: required
go: "1.15"
services: docker
dist: xenial
git:
depth: 3
notifications:
email: false
webhooks:
urls:
# travis2slack webhook to enable DMs on openwhisk-team.slack.com to PR authors with TravisCI results
secure: "NaDCtHwbFUEy0h0u/QrAt395o0/9FstJ5/Tv4uBSLCBdaUNU+0q6/RXVH76dKbujoxrLded2gyeJSAbI4kl4SM7FyilSHzKTikF0VsgM3G5veh65tVY5ztsvl40hDmK2E/PmWI3HkZNeWJO32WjraqPmhSWL0BZOWhA/4gJSCIsLnNRQXmpZoDqC7V8IG1BWYGwd5qcNkEjItLjYCUy1s2K8bj3QmhshYRVLTNbXxh0yJVKjM04I+bWhMXqvL8GS55qeicJ3fUwm5g1PDVCtzxLwAHCPo2jusjtNSnV+BaZgMBSahv3MD7ApxfF58e1buejggH3qZAhNGccC4bYJCahqVv/KKoA10kO6exH5iGwlHPWQTjMuF++PHmAk+FeQ1jh+JoUSBnIHExPnaD4CQIArHvUuQom+WJBnOz+L1H755VyPGzeDQ+ZUDlhOiQ6CDP/sqaRH3Wmo4IzhsqTsLaQs0dS1YeEWOS8gcawwNTVf/WtqiedYu24rQN9RiUXelRoEaXJy/pldb2KpyQRo2hbKoStDDB5fEij1xyGsj4kSXZ8uk5G10oDGnZYd+okduzJazN8wr0flrLvH32DRgDZDcG/D90I19JmqqfqbcG/SEmhxTikHZeVQd5DfWcqssLvWNrtQa/EJgAQkmZ2gaSsZ73AvPk/KyMV30+m8xTU="
# The complete sequence of phases of the lifecycle:
# ---------------------------------------------------------
# before_install
# install
# before_script
# script
# before_cache (OPTIONAL) (if and only if caching is effective)
# after_success (or after_failure)
# before_deploy (OPTIONAL) (if and only if deployment is active)
# deploy (OPTIONAL)
# after_deploy (OPTIONAL) (if and only if deployment is active)
# after_script
before_install:
- "./tools/travis/cloneutils.sh"
- sudo apt-get install tree
# Install tools we use for linting and unit/integration testing
# TODO: build.gradle (gradlew) already installs 'golint' and runs linting
# in the `goLint` task; see if we can remove here.
# TODO: The "gogradle" plugin in build.gradle (gradlew) already provides a
# task called "goTest" which runs all `unit` tests. See if we can use that
# instead and only run `integration` tests here.
install:
- export DEPLOY_BUILD_READY=false
- go get -u golang.org/x/lint/golint
- go get -u github.com/stretchr/testify
# Identify Golang files that are not properly formatted
# TODO: See if we can create custom tasks to perform this in build.gradle
# as a custom `goFmt` task
before_script:
- GO_FILES=$(find . -iname '*.go' -type f -not -path "./wski18n/i18n_resources.go")
- export BAD_GO=$(gofmt -s -l $(echo $GO_FILES))
- echo "["$BAD_GO"]"
#- test -z "$BAD_GO"
#- test -z "$(gofmt -s -l $(echo $GO_FILES))"
# Clone and build the OpenWhisk platform (i.e., apache/openwhisk)
# and then use Ansible to deploy it and prepare it to run our
# integration tests.
# TODO: Do not use Makefile for running integration tests (in script.sh);
# change to using gradle wrapper
script:
- echo "Installing and building OpenWhisk platform using Ansible..."
- "./tools/travis/showenv.sh"
- "./tools/travis/script.sh"
after_success:
- DEPLOY_BUILD_READY=true
- if [ "$TRAVIS_EVENT_TYPE" == "cron" ] ; then
export DEPLOY_BUILD_READY=false;
fi
# If this is a "tagged" GitHub build, then use Gradle Wrapper
# to build binaries for all supported OS platforms and architectures.
# The result would be a "/build" directory that has a subdirectory named
# for each supported GOOS/GOARCH
before_deploy:
- export build_file_name=wskdeploy
- go get github.com/inconshreveable/mousetrap
- export GIT_TAG="latest"
- export TAG=false
- if [ ! -z "$TRAVIS_TAG" ] ; then
export GIT_TAG=$TRAVIS_TAG;
export TAG=true;
fi
- echo "Calling Gradle Wrapper task to build and 'releaseBinaries'..."
- "./tools/travis/showenv.sh"
- ./gradlew --console=plain releaseBinaries -PpackageVersion=$GIT_TAG -PgitCommit=$(git rev-parse HEAD) -PbuildDate=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
- echo "Build binaries and release archives created:"
- tree /build
- tree /release
- export RELEASE_PKG_FILE="$(cd "$TRAVIS_BUILD_DIR/release" && ls ${zip_file_name}-*.tgz ${zip_file_name}-*.zip)"
- echo "Deploying "$RELEASE_PKG_FILE" to GitHub releases..."
- if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_EVENT_TYPE" == "push" ] && [ "$TRAVIS_OS_NAME" == "linux" ] ; then
git config --global user.email "builds@travis-ci.com";
git config --global user.name "Travis CI";
git tag -d $GIT_TAG;
git push -q https://$API_KEY@github.com/apache/openwhisk-wskdeploy :refs/tags/$GIT_TAG;
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag $GIT_TAG -a -m "Generated tag from Travis CI build $TRAVIS_BUILD_NUMBER";
git push -f -q https://$API_KEY@github.com/apache/openwhisk-wskdeploy $GIT_TAG;
fi
- echo "Completing before_deploy stage"
# Utilize two providers to create a github release and publish a docker image.
# For information on the "releases" provider,
# see https://docs.travis-ci.com/user/deployment/releases/
deploy:
- provider: releases
api_key:
secure: aQGcP7XKlgZEFZ57y4RzYRHfQAM5HEdaa7Y/vTxNepIsE7zY2945qT99UJnU1hfhSjP9jO5eNlHzo+AqJoUx70+iUIhMTyOp39Qp7wb74OKolkXwcntufzP7Ocron5IYUE311tf/kic3vRb5cwoaE2lGfx5PdCuozVjgpsDbIRvV5quQzNr68Toqe+yegKwAhprYRWHPnuIqGbkfa83csqFv6m0viC/gvtFOCB9/4zGCqk/K3CKrcr/5GvnFPxJoaJNfFA6umSZ9VaJjbIJmcXGD3nU+rWP0uEpvzGKIMYhmQq/0JuUTgvh4jnnT4OVZeTh6pMaUqtWH+3HDrOiLAiLjcfeT91j7ZXPnx8LvM6SuoRlvRCuXA2FYx9mz2Vx0TWV5TMqhj3okVO/CvvnMMWwKWOUDD/nSMLy93BM40NjD7zimGjocPsGAjTT9H1PSfau3fiiMjg6iMRWjUTfNY5ra5Wgb7W5G37XaCBJDBZL77Blq/tNWdV5qW4A3l4FWnH+LwOdTdhU35Lr5JWzMuEDdkvVgEv8AQjb07P/ODtBW6z3GRv9Rslg9T9ylxkgJpXoYwdXCbtYU8GNcFdJiDpTaVHrkMeLvHrBTRrDCSnCnRFc3AxsUtLklo7R/EX1wUoX+QcAGjh/AmJ4nJVP1C09913fx96WczkRX6ANg2Mw=
file_glob: true
file:
- release/${zip_file_name}-*.tgz
- release/${zip_file_name}-*.zip
overwrite: true
skip_cleanup: true
target_commitish: $TRAVIS_COMMIT
tag_name: $GIT_TAG
on:
repo: apache/openwhisk-wskdeploy
tags: $TAG
condition: "$DEPLOY_BUILD_READY = true"
- provider: script
skip_cleanup: true
script: "./tools/travis/docker/publish.sh openwhisk wskdeploy ${TRAVIS_TAG}"
on:
repo: apache/openwhisk-wskdeploy
tags: true
condition: "$DEPLOY_BUILD_READY = true"
# Clean up wskdeploy binary (single)
# Fundamentally, remove both /build and /release directory trees and contents
# TODO: See if this is really needed in Travis environments as the
# Makefile is not used elsewhere here (especially if we do not use th
# build_tag_release.sh script) as it is for Windows developers primarily
# and we are building using Linux.
after_script:
- make clean
- tree /build
- tree /release
env:
global:
- BLUEMIX_APIHOST=openwhisk.ng.bluemix.net
- secure: ClspSsyTZdDNen+qZFAN37gP6T0HO4hthuDMb/w/xekznNazoKajTh1XQg5ccQ9o7BuXt5/Mrv8ZbHIg4GQrW4puLxkqfdd956szTDznxU0zgOK23YwdPhf74Uga2ucXOJcNeOcfrgR6jtTQZ2TbS2u11PjC6yp7KKY1vYEJXsbTkJ761H7Geu4qY7PmZ0x/Srw+DwiR1ZXH/PKlZIHbOF1m6F5zkTWLpN+/8YcRUxYOs/oGtYqqz0TxNDmlUE0lh6El8iUtAGrCGxdmLK+FSPAMk4ILJOMoqeIzk/eeNr+w8eXhG29zJRz++e2jxr1kXc0OknOXroO9jmv+G6IicRrWG/Em4n/tDeuehFdRmdRDBoKSczpx3ws9qjzPahMJ5QJP3r19e8uQnSgHPJ00d4+H8P1cf46TucQNLQGuoeap+PhPTy69spXpwdyze50DaoQGVe7+nmO0RUJ13LUJZZDz2EFQg5jjx3cSwQRbT4rvMCCl1ByiyN4gJ3jwTEdPtXVVJaub9Z4aDk8GxROC/RT1SGhQmnfnMg0+H/chHpDo4M5mrNgYwRdMzgJScgRl4ShyZQF4fjvX8oT2KBbu5VGUslew8/Cgi4ezdXOJ6IGGmjzf0kdq+NLwQBKtAV/8YEWFDCTG3k1uUaw4/YlTq26kUwTqnBx4tT7/8Sh0uRI=
- secure: f8CKUxpI0xp2N78ifCQCpOg0/LAzZv7cDhuYZvWB++LJ1tdwN+aHxYCRaDLNI49fogDqCoeIcJCy2uVCmNGEXwcUsGJ0Z28qvRsewsgwwnrny8E+NyqmV/DFfAWvR095lwfQsBiqdGJLcOU2ZXvog3+y2p/I14LCInkThLJSMjA56IDqYkbp8OUy5ncLUZ726PVb/N40hw5TTpgf+yKcHXlXOmRYwH54jvxduxz0RnDSpFuV9k2qCMP10f2GZcWhFUCdOU8kYrTsMbo0Mk712Q1N49V/9QB9ZrMGIbQqufFvp+E/Wf/mL7ANyRmG0C6eOnVrtsnhjzVVJrpv0oyV53HOwmL1FrMzJE65V35B0fi8fUgslEgxnYLXeCxRetOFOyJIjTA/wIZ7uyWPrXQa+QbcQixMLYn4xe7iJHuA+d1u3b5SOcjD+eBa/s+ihISwQoKkeDja6cL+5bROTcccE0hNC4ivadPKsosGdCDdSCQhQlzGbXDGx0psYe7/9J0tGgfPsnPdn1TFyTvJRjGAQyZVULGltgAFBxcVNAoeeez36cMUVmnqsmR0wf1XHNQhCwBuBY4ujyQC74ichPgDYByhLGeQ7aiHBqt1n58AidB9eWjhjvrfEEni/S28bS2StqZ+uSQKHkdgFtWoCRnBbw+p0cdPfyO8g8vIlJpaAKY=
# Cloudant
- secure: NVP+kpAlZc1GdM2Er0EbWvG1ak6iIKgui6BrBq8lm+wSjkDXGtEnkvvvE8+IrYIvZaKurT71M0n4MfrQhEDUmxhXsQSP+ZPEB5VJD182OWMD4zfqsYmaqOsur50MOHeb4ZO6Bv0SrnCSvIcPqchXEqg3S2aYzSYtFjqW5jPECO8FOnCUu9STGN3bo2XJsMWpnhJrO+u9AYf/D6+LlD4+839gMUVUWy/vU4FTCsS5lTBwIwPV/0IBa1ivp8roteG4LOJH5LHHnUekgUt+wZgdmrny6hUTn9JMS2TzOgctHBoAiNyLzeXwvJSOPQ6w8gBFHYW1R5HlF64uaovqNnY6qLrtKyIIKNfYjqiFg250siEdm9FaFJlqqOOof6M8gfU1Ob/Ax0GthyHqjUcgNeUXd7K1BzDNWRC34wTcqXRlZyO8IvqYI21Zm1mDSNTRRA4Jw/Ajx7RLZknm5bOYwFblWCk06ULVYjhyIUcxGFUQqeIr3CQHu/V7BJthVtNPFTgOFLp8eFMaG2ACZcgS4wKyfvu5IQa1q4noWVrB8Yprft1x9+20lX4L+N//QJZLpjGX23OaBZrNMIgS6yPuD3e4UrlqOxbJC/BO1kpjLx+REdUtzp8dDCWpHd5ISS8V1Yr3p9Gk8Q6lnR0MIsGEW1t/3qMaEgw69OiWtV86f+zlBTs=
- secure: pQhw+jUrDK8+s8BV/5y7CXTfdzGxit0Ej1BAJcs9xcjIpLFFW1+d+n2bcXVk8F43lhsHeilmwfUnxnHkI48qGED4HBZ4cUpI6Ka69oP+hRZdBXQLHysZIHpSBC1vWPCN1SSV/wSc4bNTXopyr0XmtY/aRpOusunz8uIj218/44Z3S3lgNqLeMHaQjzo3/Dh0IXtTYYfdnHzMB/9z3WvS3ycZ5OfdWnNWZT4OEw1NIESjFe/+g/ioQLq16BtIIxFq3+R4ujvUSxZCuOa6V8636hs+DvBZAwBkUljNCgR8CCzFMOrYcqzViCmiNHmIH7xkNWyVCQyB2xLk4lSkavI04wLTajqz1bvDbSZN5zxcz7oSkeg1ng3waMSDEPuQBVj6IHq3LnNN81kCI1Fyx9stimR5qA0GGzayG1OjA5tlxEsqgv0lu87MWj2KevVNcpLdyJQ8h0AWknPAhliCiGINSZz5y96yN8P2HIIvh0Ioh0coty6wZNsskfMrifpoBrgRDHseb+7jnj6KYdtxse0dLVSCo07Brqhp4N1dvYnqxgh71LhuDVe+Yocu4hU0EtT7hOgoP/tl5XNTQ0fQCB3TdowZ+7QFkcv7z3FJjOI2mL6qXKQi8Cdi/624vT8mKVIdI8yNbymyhIVAhG8zapQ+3kObLBAU22xvsUMztds2EFE=
# MessageHub
- secure: caCbpNxXM+wn98yRhavvb9fkY3pH4Dssr9zbIBVdO3Vtgnii+DYjj2i5ZL0zoXAQUJxyFx97kcO+KbB4OnaEWxPJ6hZiygtosuIccZIzhZNFp1NnFxsPQgIXjD7j71Nc6OcOQed56GbItmPSrmzcMyYYtkifvf8cAxoHVwqsYgGx65E88FPaBM86PUyKbNR5nBSVcx5dpFlJ/E2CmNkG5DnW/o1u4+mJvOrgR827MctO2AEUMTLDOCuU1nxGJciM7bBwcKVL09/fC8RAF0AXrGabOxlhZGhVp+5K/ifzNoAk+l5WTDP8vNI2H/rWzfsat5oqCy2SHjs5l1rHIei9Wy6QfPSDA6e5wlNs1XzT2DnO6sLmCxHTBv/+GrF/Glr50FaTuPlYYBjt626WwEiJIJvmsPMziVnY1cjRonz0Owk23TCcpjDM/3IIAfcbI/ZKfHRp+bdehMxAqMGxuLWCV/6lX+QV0tlPun2t4TwrZlTNmQPE+zaLgdF36vfJdwVfx3+2XkHn1aYNq1LJKuwYKBPjUdUU9VcVcdErFKyNa7pFoSjE9tfJrP+B1xilEEPDAnrNlEp+i1h1FS3VGRBNlej72t3Wt0q5/UQEulinUgsKm51nGvNGrvwRImzyS8aq73rSJkac8/nXIw9m9DtWugMEMTnMBs0j2MxTsAfR6SQ=
- secure: 15ImIPDIDLZQbHMjPaY9Yx//Z7qoxS1A2J6NiZaGqEZXOfksskhRlLnxW2GIvy1wBEGMICevMqBWevG5/6csPwXzBe9nrqkfnGOYN7nakttZWHHqU7Jh5YnpCfzeyHzfxVtJKuB/vJvxE6Hp34aqwIAQL1R13Ci0BNAuxPjnhpIGf7b9wXjX3mQ24XVPC9smMeUCE66aZ9BxGkGM5KzCezdLvpWV7Mq0y6xbPFzS/1oZeXrrNqaVgLKXGjnumJNJ+Mf75tJj2Q2hMoGHcTY+FOiAz6ueIuNR6ZKHyHGYpo+PAZUMlpC/9P6tCjOegx82EWfKUquNOh0rJcGOoFWrcuQ8FBO7/qSA1KbzeW7Rs9mL+ZkxqRC6SbFoe39Wda7/PE625JTeocsNbvacbEKwPLtLgDo3NJi3Lt0aEi/oUVaAEgiFZh5GchfDD8S2dTYt+TnaKjzKou7vJ6mf1FeKBqLH8MO+lbfez1pMvUsoXzFoYjG89Uy57x+0DUE9492Tr5wDeIbsVngxDkMye98hAGgsu1qTA7/+vm94HYrTLw+7HrJh1FoNfGnDmEpbLmBXCBRLj7TFL8QoV3m3uLwWE7gU63VYAyuNKFnDRrWXndmlakjHQSpejGWwPaQgvLJwS9Dm3m28NkWr1j5c3QsJcGps8iigRdgjeDCepOjF6G8=
# DockerHub
- secure: R9bjVMNFBHgT3MhdN9e9aVP9jcOa99vN+XtYNBSiVP2gAfC+dFHA3U8wGj2Scho3rJI/Wd8KKNn2Lo5Wlc2tDFXVcKeLjF7nIHf74D5hLGdn6SNuvVPKCYSvnpA3QswfnHz7Y9wbYaQkjkHHkXktl4TwbsuKvMVso3Qgrc1KkQ6X8zzOtEdE9F0Md3Y508yfqxYat0qOOogN32brItJkp/9WMsLTtSZs/7iSFkRxKNCWctJx5mQ26tU/1b9NTCIipoyA+jmbrZNpot0M8b5nJ+8777FaBHhDdKayvQDcsAUpdSFzVOTby32+8Yk4E4PA2F2Q2BxEXe38GK7C3kRpYqHEkQ4lbF0LVjXwiSmEDe5tpdCn3U46/7f45v8JP1eRVearhHISOgwxM7v80S7k0fa0+xWFX0BCce05Rc6sxQzmUP/oRsqtYoBKovS4DK0cYA0dIMkJeJIoNKeyDaHn0tmSnaDxPxLQJz296Ffklyay6j8XIhWMyV0edpgu0rxq2ou+7f7zUL3Fld0ui3Bseb8MkXOIq10hR0hErLnhgKVT1jtYcz5qJ6nwS051rKJXrgnmSiAqQHtrSMRILC90xWxW9UoJt0roPhdW2+tbaaOM+JXZ7U0krw9rI0oAY+jiSX7LY7ESxMaL0Alhe7lFqk3DeRp5QWVMCmMoeG2vWOQ=
- secure: AA8dirvhPlK/pdm6hzanSkYnLi/b6loEAPrSMc/mNa7ZkNrTPyPBq3B/GkNW1AEmoTOr7JGGfLk33FuffqvqIXGam3bUtVWqZdNpa1pvR9MM4laaWSfBk5fakM6rOdq5UtoYHzr00NlIjz0g/CmTn4DRbGNa43F1CkXgH1XypoBUhZZGYkcMdWMX8qYm3e32kutKUFR2GUd0xoTR91EBgIxRh8sq6wkRlfNFOwrghldYMrLP4VlUTqC/usG5G0lU+U21PlW/k3QEOxe00K46W3qAQIWTFBl3q9fX912HJZwvTC29t5hDS9zsG4Vhj93O9mwHzTfjAE/+vkXRkvnx0FPVOHqSepAAffd4rAD3N4aLGVHpGqWobg5daKegbJmCeoSaknaodNrPYq6YjTUEz4n/ckjaB/RHECkutLZh1wtJgR1joQVfAdvn3WpIYRD3CkNN6v5y5sWnX4fkVL9tCcMcukTzk6U/mEtJr6f+RC8suSw0X1c6tr+rCyXJY6a4o5ZoIXxJ52LtQaKrEbFH6fkRC4aCVuLYUAIyYoeqauXqsGpNfhmkS36DLvx5ojfpXnBdTWwwJMflm24Ec9FdOnQCkRhKiZLIxu1jJS6gy0Pe4/Vt15WiRnt1t2I9F6wIk895G0Qz2yiIQ1MmpjCnMnY8BoT9Nqs78YOfnNtgax8=
# API_KEY used to generate the "latest" tag automatically
- secure: CHEYJanoGBV2W9LqBbnG312cOBj4FIWeiLLjfult/VDcjBlAQ71EzpBEv+H9c5J5ZmeRouQ3+dUC2wCJTCeTdzAOIi9Qci7tvTT8yYPShqGS3R1q+Hx1VBaGZhEDpxDcUDDGETBOQD6du7OTKOy+4bW0EdgZA6XENcIQNp5lCPVA2BMp8wI4vUgydbK3Po1vbj4KauBtk+XPU7cUkTxtw/QUyC5Eih6QphVovBIIngBSP917sO0ENwQHjOOkCb0rG1b5OnrAMOQSbpQsVgblv8caKINqnLG5aePN3YJCB5AFzXtQI515RQ9Tf8mX1XSceFtPwAfJhqLw8kHCoiu/ptLi/rxhuv1DTD+t+Y7413bMg/qIP08KKjyj+ScyeMRVnPEfNRC+z98Ka55FDhid9+FDx0uQ7ICDpi/TkCv8GDStk55vkSp3tYfNbORk453y4K6Yf7eS041ugfC3KejlmU2IPulwxQCFjFDZl7JMZo5NMOqBj6RUStWiF3DlxcM2M0I97B2cycwL6jTOlvFJUEFPoU9UIN9ICEYRdY33nxyG5qr+ymq0YgmZqmcjK3dGd5j32xXMqsDO+vrG+CnEpwht7uo6IQWYD44qsixe8J4HcoSYkm901mQYqT7VpNy6BXqHjPBSFUYkHaV/whT6QtCxKaaa7dg0s/jqi/zAnQY=
- zip_file_name=openwhisk_wskdeploy