From 00a8430a24ecdf1ec56748fb55be3cc13d6ff2fd Mon Sep 17 00:00:00 2001 From: Soam Vasani Date: Tue, 15 Aug 2017 17:00:27 -0700 Subject: [PATCH] Fix bug that causes us to skip our new e2e tests (#285) Various e2e test bugfixes. The test runner now compiles fission bundle and cli, installs helm, installs kubectl, and uses helm to install fission, run all scripts under test/tests/, and uninstalls fission. The change also removes go tip tests -- I think we can get by without them, but we'll add them back if the next go version update brings some surprises. --- .travis.yml | 4 ++-- hack/travis-kube-setup.sh | 26 ++++++++++++++++++++++---- test/test_utils.sh | 23 +++++++++++++++++++++-- test/tests/test_pass.sh | 2 +- 4 files changed, 46 insertions(+), 9 deletions(-) mode change 100644 => 100755 test/tests/test_pass.sh diff --git a/.travis.yml b/.travis.yml index d56d1028..576f3890 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,18 +4,18 @@ language: go go: - 1.8 -- tip cache: directories: - $HOME/google-cloud-sdk/ + - $HOME/k8scli install: - go get github.com/Masterminds/glide - hack/travis-kube-setup.sh env: -- KUBECONFIG=${HOME}/.kube/config +- KUBECONFIG=${HOME}/.kube/config PATH=$HOME/k8scli:${PATH} script: - cd ${TRAVIS_BUILD_DIR} diff --git a/hack/travis-kube-setup.sh b/hack/travis-kube-setup.sh index 524b0940..1fc2c862 100755 --- a/hack/travis-kube-setup.sh +++ b/hack/travis-kube-setup.sh @@ -7,16 +7,34 @@ set -e # If we don't have gcloud credentials, bail out of these tests. -if [ -z ${FISSION_CI_SERVICE_ACCOUNT:+} ] +if [ -z "$FISSION_CI_SERVICE_ACCOUNT" ] then echo "Skipping tests, no cluster credentials" exit 0 fi +K8SCLI_DIR=$HOME/k8scli + +if [ ! -d $K8SCLI_DIR ] +then + mkdir -p $K8SCLI_DIR +fi + # Get kubectl -curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl -chmod +x ./kubectl -sudo mv ./kubectl /usr/local/bin/kubectl +if [ ! -f $K8SCLI_DIR/kubectl ] +then + curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl + chmod +x ./kubectl + mv kubectl $K8SCLI_DIR/kubectl +fi + +# Get helm +if [ ! -f $K8SCLI_DIR/helm ] +then + curl -LO https://storage.googleapis.com/kubernetes-helm/helm-v2.5.1-linux-amd64.tar.gz + tar xzvf helm-*.tar.gz + mv linux-amd64/helm $K8SCLI_DIR/helm +fi mkdir ${HOME}/.kube diff --git a/test/test_utils.sh b/test/test_utils.sh index eb0ef700..dfbfc9a6 100755 --- a/test/test_utils.sh +++ b/test/test_utils.sh @@ -10,12 +10,29 @@ set -euo pipefail ROOT=$(dirname $0)/.. +helm_setup() { + helm init +} + +gcloud_login() { + KEY=${HOME}/gcloud-service-key.json + if [ ! -f $KEY ] + then + echo $FISSION_CI_SERVICE_ACCOUNT | base64 -d - > $KEY + fi + + gcloud auth activate-service-account --key-file $KEY +} + build_and_push_fission_bundle() { image_tag=$1 pushd $ROOT/fission-bundle ./build.sh docker build -t $image_tag . + + gcloud_login + gcloud docker -- push $image_tag popd } @@ -27,7 +44,7 @@ build_fission_cli() { } generate_test_id() { - echo $(date|md5|cut -c1-6) + echo $(date|md5sum|cut -c1-6) } helm_install_fission() { @@ -42,13 +59,15 @@ helm_install_fission() { helmVars=image=$image,imageTag=$imageTag,functionNamespace=$fns,controllerPort=$controllerNodeport,routerPort=$routerNodeport,pullPolicy=alwaysPull + helm_setup + echo "Installing fission" helm install \ --wait \ --name $id \ --set $helmVars \ --namespace $ns \ - ../charts/fission-all + $ROOT/charts/fission-all } wait_for_service() { diff --git a/test/tests/test_pass.sh b/test/tests/test_pass.sh old mode 100644 new mode 100755 index 88b05561..94d848c1 --- a/test/tests/test_pass.sh +++ b/test/tests/test_pass.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -euo pipefail