127 lines
4.1 KiB
YAML
127 lines
4.1 KiB
YAML
version: 2
|
|
jobs:
|
|
validate:
|
|
docker:
|
|
- image: circleci/golang:1.12
|
|
working_directory: /go/src/github.com/virtual-kubelet/virtual-kubelet
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: go vet
|
|
command: V=1 CI=1 make vet
|
|
- run:
|
|
name: Install linters
|
|
command: curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | bash -s v1.10.2 && mv ./bin/* /go/bin/
|
|
- run:
|
|
name: Lint
|
|
command: golangci-lint run --new-from-rev "HEAD~$(git rev-list master.. --count)" ./...
|
|
- run:
|
|
name: Dependencies
|
|
command: scripts/validate/dep.sh
|
|
|
|
test:
|
|
docker:
|
|
- image: circleci/golang:1.12
|
|
working_directory: /go/src/github.com/virtual-kubelet/virtual-kubelet
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Build
|
|
command: V=1 make build
|
|
- run:
|
|
name: Install Nomad
|
|
command: |
|
|
curl \
|
|
--silent \
|
|
--location \
|
|
--output nomad.zip \
|
|
https://releases.hashicorp.com/nomad/0.8.6/nomad_0.8.6_linux_amd64.zip && \
|
|
unzip nomad.zip && \
|
|
chmod +x nomad && \
|
|
mv nomad /go/bin/nomad && \
|
|
rm nomad.zip
|
|
- run:
|
|
name: Tests
|
|
command: V=1 CI=1 SKIP_AWS_E2E=1 make test
|
|
|
|
e2e:
|
|
machine:
|
|
image: circleci/classic:201808-01
|
|
working_directory: /home/circleci/go/src/github.com/virtual-kubelet/virtual-kubelet
|
|
environment:
|
|
CHANGE_MINIKUBE_NONE_USER: true
|
|
GOPATH: /home/circleci/go
|
|
KUBECONFIG: /home/circleci/.kube/config
|
|
KUBERNETES_VERSION: v1.12.3
|
|
MINIKUBE_HOME: /home/circleci
|
|
MINIKUBE_VERSION: v0.30.0
|
|
MINIKUBE_WANTUPDATENOTIFICATION: false
|
|
MINIKUBE_WANTREPORTERRORPROMPT: false
|
|
SKAFFOLD_VERSION: v0.18.0
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Install kubectl
|
|
command: |
|
|
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBERNETES_VERSION}/bin/linux/amd64/kubectl
|
|
chmod +x kubectl
|
|
sudo mv kubectl /usr/local/bin/
|
|
mkdir -p ${HOME}/.kube
|
|
touch ${HOME}/.kube/config
|
|
- run:
|
|
name: Install Skaffold
|
|
command: |
|
|
curl -Lo skaffold https://github.com/GoogleContainerTools/skaffold/releases/download/${SKAFFOLD_VERSION}/skaffold-linux-amd64
|
|
chmod +x skaffold
|
|
sudo mv skaffold /usr/local/bin/
|
|
- run:
|
|
name: Install Minikube
|
|
command: |
|
|
curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/${MINIKUBE_VERSION}/minikube-linux-amd64
|
|
chmod +x minikube
|
|
sudo mv minikube /usr/local/bin/
|
|
- run:
|
|
name: Start Minikube
|
|
command: |
|
|
sudo -E minikube start --vm-driver=none --cpus 2 --memory 2048 --kubernetes-version=${KUBERNETES_VERSION}
|
|
- run:
|
|
name: Wait for Minikube
|
|
command: |
|
|
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}';
|
|
until kubectl get nodes -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do
|
|
sleep 1;
|
|
done
|
|
- run:
|
|
name: Watch pods
|
|
command: kubectl get pods -o json --watch
|
|
background: true
|
|
- run:
|
|
name: Watch nodes
|
|
command: kubectl get nodes -o json --watch
|
|
background: true
|
|
- run:
|
|
name: Run the end-to-end test suite
|
|
command: |
|
|
mkdir $HOME/.go
|
|
export PATH=$HOME/.go/bin:${PATH}
|
|
curl -fsSL -o "/tmp/go.tar.gz" "https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz"
|
|
tar -C $HOME/.go --strip-components=1 -xzf "/tmp/go.tar.gz"
|
|
go version
|
|
make e2e
|
|
- run:
|
|
name: Collect logs on failure from vkubelet-mock-0
|
|
command: |
|
|
kubectl logs vkubelet-mock-0
|
|
when: on_fail
|
|
|
|
workflows:
|
|
version: 2
|
|
validate_and_test:
|
|
jobs:
|
|
- validate
|
|
- test
|
|
- e2e:
|
|
requires:
|
|
- validate
|
|
- test
|