This is an automated email from the ASF dual-hosted git repository. houshengbo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-deploy-kube.git
commit facb52b0675f3d6fbabfccb287ff25ac815b2a87 Author: Matt Rutkowski <[email protected]> AuthorDate: Thu Aug 17 10:12:05 2017 -0500 run travis files from propert directory;add scancode again. --- .travis.yml | 4 +- .travis/build.sh | 200 +++++++++++++++++++++++++++++++++++++++++++++++ .travis/setup.sh | 66 ++++++++++++++++ tools/travis/scancode.sh | 2 +- 4 files changed, 269 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 654780c..e794123 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,8 +14,8 @@ services: before_install: - ./tools/travis/setupscan.sh - - ./tools/travis/setup.sh + - .travis/setup.sh script: - ./tools/travis/scancode.sh - - ./tools/travis/build.sh + - .travis/build.sh diff --git a/.travis/build.sh b/.travis/build.sh new file mode 100755 index 0000000..6eca786 --- /dev/null +++ b/.travis/build.sh @@ -0,0 +1,200 @@ +#!/bin/bash + +set -x + +SCRIPTDIR=$(cd $(dirname "$0") && pwd) +ROOTDIR="$SCRIPTDIR/../" + +cd $ROOTDIR + +kubectl apply -f configure/openwhisk_kube_namespace.yml + +couchdbHealthCheck () { + # wait for the pod to be created before getting the job name + sleep 5 + POD_NAME=$(kubectl -n openwhisk get pods -o wide --show-all | grep "couchdb" | awk '{print $1}') + + PASSED=false + TIMEOUT=0 + until [ $TIMEOUT -eq 25 ]; do + if [ -n "$(kubectl -n openwhisk logs $POD_NAME | grep "Apache CouchDB has started on http://0.0.0.0:5984")" ]; then + break + fi + + let TIMEOUT=TIMEOUT+1 + sleep 30 + done + + if [ $TIMEOUT -eq 25 ]; then + echo "Failed to finish deploying CouchDB" + + kubectl -n openwhisk logs $POD_NAME + exit 1 + fi + + echo "CouchDB is up and running" +} + +deploymentHealthCheck () { + if [ -z "$1" ]; then + echo "Error, component health check called without a component parameter" + exit 1 + fi + + PASSED=false + TIMEOUT=0 + until $PASSED || [ $TIMEOUT -eq 25 ]; do + KUBE_DEPLOY_STATUS=$(kubectl -n openwhisk get pods -o wide | grep "$1" | awk '{print $3}') + if [ "$KUBE_DEPLOY_STATUS" == "Running" ]; then + PASSED=true + break + fi + + kubectl get pods --all-namespaces -o wide --show-all + + let TIMEOUT=TIMEOUT+1 + sleep 30 + done + + if [ "$PASSED" = false ]; then + echo "Failed to finish deploying $1" + + kubectl -n openwhisk logs $(kubectl -n openwhisk get pods -o wide | grep "$1" | awk '{print $1}') + exit 1 + fi + + echo "$1 is up and running" +} + +statefulsetHealthCheck () { + if [ -z "$1" ]; then + echo "Error, StatefulSet health check called without a parameter" + exit 1 + fi + + PASSED=false + TIMEOUT=0 + until $PASSED || [ $TIMEOUT -eq 25 ]; do + KUBE_DEPLOY_STATUS=$(kubectl -n openwhisk get pods -o wide | grep "$1"-0 | awk '{print $3}') + if [ "$KUBE_DEPLOY_STATUS" == "Running" ]; then + PASSED=true + break + fi + + kubectl get pods --all-namespaces -o wide --show-all + + let TIMEOUT=TIMEOUT+1 + sleep 30 + done + + if [ "$PASSED" = false ]; then + echo "Failed to finish deploying $1" + + kubectl -n openwhisk logs $(kubectl -n openwhisk get pods -o wide | grep "$1"-0 | awk '{print $1}') + exit 1 + fi + + echo "$1-0 is up and running" + +} + +# setup couchdb +pushd kubernetes/couchdb + kubectl apply -f couchdb.yml + + couchdbHealthCheck +popd + +# setup zookeeper +pushd kubernetes/zookeeper + kubectl apply -f zookeeper.yml + + deploymentHealthCheck "zookeeper" +popd + +# setup kafka +pushd kubernetes/kafka + kubectl apply -f kafka.yml + + deploymentHealthCheck "kafka" +popd + +# setup the controller +pushd kubernetes/controller + kubectl apply -f controller.yml + + statefulsetHealthCheck "controller" +popd + +# setup the invoker +pushd kubernetes/invoker + kubectl apply -f invoker.yml + + # wait until the invoker is ready + statefulsetHealthCheck "invoker" +popd + +# setup nginx +pushd kubernetes/nginx + ./certs.sh localhost + kubectl -n openwhisk create configmap nginx --from-file=nginx.conf + kubectl -n openwhisk create secret tls nginx --cert=certs/cert.pem --key=certs/key.pem + kubectl apply -f nginx.yml + + # wait until nginx is ready + deploymentHealthCheck "nginx" +popd + +AUTH_WSK_SECRET=789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP +AUTH_GUEST=23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP +WSK_PORT=$(kubectl -n openwhisk describe service nginx | grep https-api | grep NodePort| awk '{print $3}' | cut -d'/' -f1) + +# download and setup the wsk cli from nginx +wget --no-check-certificate https://localhost:$WSK_PORT/cli/go/download/linux/amd64/wsk +chmod +x wsk +sudo cp wsk /usr/local/bin/wsk + +./wsk property set --auth $AUTH_GUEST --apihost https://localhost:$WSK_PORT + + +# setup the catalog +pushd /tmp + git clone https://github.com/apache/incubator-openwhisk + export OPENWHISK_HOME=$PWD/incubator-openwhisk + + git clone https://github.com/apache/incubator-openwhisk-catalog + + pushd incubator-openwhisk-catalog/packages + export WHISK_CLI_PATH=/usr/local/bin/wsk + + # This script currently has an issue where the cli path is the 4th argument + ./installCatalog.sh $AUTH_WSK_SECRET https://localhost:$WSK_PORT $WHISK_CLI_PATH + popd +popd + +# create wsk action +cat > hello.js << EOL +function main() { + return {payload: 'Hello world'}; +} +EOL + +./wsk -i action create hello hello.js + +sleep 5 + +# run the new hello world action +RESULT=$(./wsk -i action invoke --blocking hello | grep "\"status\": \"success\"") + +if [ -z "$RESULT" ]; then + echo "FAILED! Could not invoked custom action" + + echo " ----------------------------- controller logs ---------------------------" + kubectl -n openwhisk logs controller-0 + + echo " ----------------------------- invoker logs ---------------------------" + kubectl -n openwhisk logs invoker-0 + exit 1 +fi + +echo "PASSED! Deployed openwhisk and invoked custom action" diff --git a/.travis/setup.sh b/.travis/setup.sh new file mode 100755 index 0000000..6fdbc42 --- /dev/null +++ b/.travis/setup.sh @@ -0,0 +1,66 @@ +# This script assumes Docker is already installed +#!/bin/bash + +set -x + +# set docker0 to promiscuous mode +sudo ip link set docker0 promisc on + +# install etcd +wget https://github.com/coreos/etcd/releases/download/$TRAVIS_ETCD_VERSION/etcd-$TRAVIS_ETCD_VERSION-linux-amd64.tar.gz +tar xzf etcd-$TRAVIS_ETCD_VERSION-linux-amd64.tar.gz +sudo mv etcd-$TRAVIS_ETCD_VERSION-linux-amd64/etcd /usr/local/bin/etcd +rm etcd-$TRAVIS_ETCD_VERSION-linux-amd64.tar.gz +rm -rf etcd-$TRAVIS_ETCD_VERSION-linux-amd64 + +# download kubectl +wget https://storage.googleapis.com/kubernetes-release/release/$TRAVIS_KUBE_VERSION/bin/linux/amd64/kubectl +chmod +x kubectl +sudo mv kubectl /usr/local/bin/kubectl + +# download kubernetes +git clone https://github.com/kubernetes/kubernetes $HOME/kubernetes + +# install cfssl +go get -u github.com/cloudflare/cfssl/cmd/... + +pushd $HOME/kubernetes + git checkout $TRAVIS_KUBE_VERSION + kubectl config set-credentials myself --username=admin --password=admin + kubectl config set-context local --cluster=local --user=myself + kubectl config set-cluster local --server=http://localhost:8080 + kubectl config use-context local + + # start kubernetes in the background + sudo PATH=$PATH:/home/travis/.gimme/versions/go1.7.linux.amd64/bin/go \ + KUBE_ENABLE_CLUSTER_DNS=true \ + hack/local-up-cluster.sh & +popd + +# Wait until kube is up and running +TIMEOUT=0 +TIMEOUT_COUNT=40 +until $( curl --output /dev/null --silent http://localhost:8080 ) || [ $TIMEOUT -eq $TIMEOUT_COUNT ]; do + echo "Kube is not up yet" + let TIMEOUT=TIMEOUT+1 + sleep 20 +done + +if [ $TIMEOUT -eq $TIMEOUT_COUNT ]; then + echo "Kubernetes is not up and running" + exit 1 +fi + +echo "Kubernetes is deployed and reachable" + +# Try and sleep before issuing chown. Currently, Kubernetes is started by +# a command that is run in the background. Technically Kubernetes could be +# up and running, but those files might not exist yet as the previous command +# could create them after Kube starts successfully. +sleep 5 + +sudo chown -R $USER:$USER $HOME/.kube + +# Have seen issues where chown does not instantly change file permissions. +# When this happens the build.sh cript can have failures. +sleep 30 diff --git a/tools/travis/scancode.sh b/tools/travis/scancode.sh index 2202c45..ebfa361 100755 --- a/tools/travis/scancode.sh +++ b/tools/travis/scancode.sh @@ -8,4 +8,4 @@ UTIL_DIR="$ROOTDIR/../incubator-openwhisk-utilities" # run scancode cd $UTIL_DIR -scancode/scanCode.py $ROOTDIR \ No newline at end of file +scancode/scanCode.py $ROOTDIR -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
