diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..1c980db --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,170 @@ +version: 2 + +integration-test-environment: &integration-test-environment + GO_VERSION: "1.12.5" + KUBECONFIG: /home/circleci/.kube/config + MINIKUBE_VERSION: v1.1.0 + MINIKUBE_WANTUPDATENOTIFICATION: false + MINIKUBE_WANTREPORTERRORPROMPT: false + MINIKUBE_HOME: /home/circleci + CHANGE_MINIKUBE_NONE_USER: true + GOPATH: /go + DOCKER_LATEST: 1 + GIN_MODE: release + +integration-test-base: &integration-test-base + machine: + image: ubuntu-1604:201903-01 + docker_layer_caching: true + steps: + - run: + name: Setup 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 + background: true + command: | + sudo -E minikube start --vm-driver=none --cpus 2 --memory 4096 --kubernetes-version=${K8S_VERSION} + + - run: + name: Setup kubectl + command: | + curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/ + mkdir -p ${HOME}/.kube + touch ${HOME}/.kube/config + + - checkout + + - run: + name: Create go directory + command: | + sudo mkdir /go + sudo chmod 777 /go + + - restore_cache: + name: Restore Go module cache + keys: + - gomod-v2-{{ .Branch }}-{{ checksum "go.sum" }} + - gomod-v2-{{ .Branch }} + - gomod-v2-master + - gomod-v2 + + - run: + name: Setup golang + command: | + sudo rm -rf /usr/local/go + curl -Lo go.linux-amd64.tar.gz https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz && sudo tar -C /usr/local -xzf go.linux-amd64.tar.gz && rm go.linux-amd64.tar.gz + + - run: + name: Wait for minikube + command: | + timeout 180s bash <