Kubernetes access for Travis CI tests (#272)
Sets up Travis CI tests to use a Kubernetes cluster on GKE. All tests have access to $KUBECONFIG which points at a kubeconfig file with credentials to a cluster. I had to skip the poolmgr unit test because it currently assumes NodePort services; that will be fixed in another change. Also, because some of the tests don't work properly in parallel, I've ended up reducing the concurrency to 1. If this becomes a problem we'll have to fix the tests, but for now I don't mind just waiting a few minutes longer.
This commit is contained in:
+17
-12
@@ -1,20 +1,25 @@
|
||||
sudo: required
|
||||
dist: trusty
|
||||
|
||||
language: go
|
||||
|
||||
go:
|
||||
- 1.8
|
||||
- tip
|
||||
- 1.8
|
||||
- tip
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/google-cloud-sdk/
|
||||
|
||||
install:
|
||||
- go get github.com/Masterminds/glide
|
||||
- curl -L https://github.com/coreos/etcd/releases/download/v3.0.15/etcd-v3.0.15-linux-amd64.tar.gz -o /tmp/etcd-v3.0.15-linux-amd64.tar.gz && mkdir -p /tmp/test-etcd && tar xzvf /tmp/etcd-v3.0.15-linux-amd64.tar.gz -C /tmp/test-etcd --strip-components=1
|
||||
- go get github.com/Masterminds/glide
|
||||
- hack/travis-kube-setup.sh
|
||||
|
||||
env:
|
||||
- KUBECONFIG=${HOME}/.kube/config
|
||||
|
||||
script:
|
||||
- cd ${TRAVIS_BUILD_DIR}
|
||||
- glide install
|
||||
- ./fission-bundle/build.sh
|
||||
- hack/verify-gofmt.sh
|
||||
- /tmp/test-etcd/etcd &
|
||||
- go test -v -i $(go list ./... | grep -v '/vendor/' | grep -v 'examples/go')
|
||||
- go test -v $(go list ./... | grep -v '/vendor/' | grep -v 'examples/go')
|
||||
- cd ${TRAVIS_BUILD_DIR}
|
||||
- glide install
|
||||
- ./fission-bundle/build.sh
|
||||
- hack/verify-gofmt.sh
|
||||
- hack/runtests.sh
|
||||
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# The poolmgr unit test only works with NodePort-type services for
|
||||
# now. So disable it for our travis ci tests.
|
||||
|
||||
go test -v -i $(go list ./... | grep -v '/vendor/' | grep -v 'examples/go')
|
||||
go test -v $(go list ./... | grep -v '/vendor/' | grep -v 'examples/go' | grep -v poolmgr)
|
||||
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Download kubectl, save kubeconfig, and ensure we can access the test cluster
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
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
|
||||
|
||||
mkdir ${HOME}/.kube
|
||||
|
||||
# echo $KUBECONFIG_CONTENTS | base64 -D - > ${HOME}/.kube/config
|
||||
# kubectl version
|
||||
|
||||
# gcloud stuff
|
||||
# https://stackoverflow.com/questions/38762590/how-to-install-google-cloud-sdk-on-travis
|
||||
|
||||
if [ ! -d "${HOME}/google-cloud-sdk/bin" ]
|
||||
then
|
||||
rm -rf $HOME/google-cloud-sdk
|
||||
export CLOUDSDK_CORE_DISABLE_PROMPTS=1
|
||||
curl https://sdk.cloud.google.com | bash
|
||||
fi
|
||||
|
||||
# gcloud command
|
||||
export PATH=${HOME}/google-cloud-sdk/bin:${PATH}
|
||||
|
||||
# ensure we have the gcloud binary
|
||||
gcloud version
|
||||
|
||||
# get gcloud credentials
|
||||
echo $FISSION_CI_SERVICE_ACCOUNT | base64 -d - > ${HOME}/gcloud-service-key.json
|
||||
gcloud auth activate-service-account --key-file ${HOME}/gcloud-service-key.json
|
||||
|
||||
# get kube config
|
||||
gcloud container clusters get-credentials fission-ci-1 --zone us-central1-a --project fission-ci
|
||||
|
||||
# remove gcloud creds
|
||||
unset FISSION_CI_SERVICE_ACCOUNT
|
||||
rm ${HOME}/gcloud-service-key.json
|
||||
|
||||
# does it work?
|
||||
|
||||
if [ ! -f ${HOME}/.kube/config ]
|
||||
then
|
||||
echo "Missing kubeconfig"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
kubectl get node
|
||||
Reference in New Issue
Block a user