You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ho...@apache.org on 2017/08/17 15:41:47 UTC

[incubator-openwhisk-deploy-kube] 02/02: run travis files from propert directory; add scancode again.

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 <mr...@us.ibm.com>
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
"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>.