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