* ci: move go vet to validate check Signed-off-by: Paulo Pires <pjpires@gmail.com> * cri: don't build when not on linux Signed-off-by: Paulo Pires <pjpires@gmail.com>
104 lines
3.4 KiB
YAML
104 lines
3.4 KiB
YAML
version: 2
|
|
jobs:
|
|
validate:
|
|
docker:
|
|
- image: circleci/golang:1.10
|
|
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.10
|
|
working_directory: /go/src/github.com/virtual-kubelet/virtual-kubelet
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Create the credentials file
|
|
command: sh scripts/createCredentials.sh
|
|
- run: |
|
|
echo 'export AZURE_AUTH_LOCATION=${outputPathCredsfile}' >> $BASH_ENV
|
|
- run: |
|
|
echo 'export KUBECONFIG=${outputPathKubeConfigFile}' >> $BASH_ENV
|
|
- run:
|
|
name: Build
|
|
command: V=1 make build
|
|
- 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: Deploy virtual-kubelet
|
|
command: |
|
|
make skaffold MODE=run
|
|
- run:
|
|
name: Run the end-to-end test suite
|
|
command: |
|
|
make e2e
|
|
|
|
workflows:
|
|
version: 2
|
|
validate_and_test:
|
|
jobs:
|
|
- validate
|
|
- test
|
|
- e2e |