From ade5ea2361aabc8a0f7b0fc0340ef890aaaf33c3 Mon Sep 17 00:00:00 2001 From: Sandeep Rajan Date: Mon, 17 Jun 2019 14:26:42 -0400 Subject: [PATCH] Add CircleCI for Integration testing (#2889) * add circleci * make ci work * use existing script for setup * add sep step for getting CI repo --- .circleci/config.yml | 69 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..79f6d2e47 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,69 @@ +version: 2 + +initWorkingDir: &initWorkingDir + type: shell + name: Initialize Working Directory + pwd: / + command: | + mkdir -p ~/go/src/${CIRCLE_PROJECT_USERNAME}/coredns + sudo chown -R circleci ~/go + mkdir -p ~/go/out/tests + mkdir -p ~/go/out/logs + mkdir -p /home/circleci/logs + GOROOT=$(go env GOROOT) + sudo rm -r $(go env GOROOT) + sudo mkdir $GOROOT + curl https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz | sudo tar xz -C $GOROOT --strip-components=1 + +integrationDefaults: &integrationDefaults + machine: + image: ubuntu-1604:201903-01 + working_directory: ~/go/src/${CIRCLE_PROJECT_USERNAME}/coredns + environment: + - K8S_VERSION: v1.13.3 + - KUBECONFIG: /home/circleci/.kube/config + - MINIKUBE_VERSION: v0.33.1 + - MINIKUBE_WANTUPDATENOTIFICATION: false + - MINIKUBE_WANTREPORTERRORPROMPT: false + - CHANGE_MINIKUBE_NONE_USER: true + - MINIKUBE_HOME: /home/circleci + +setupKubernetes: &setupKubernetes + - run: + name: Setup Kubernetes + command: ~/go/src/${CIRCLE_PROJECT_USERNAME}/ci/build/kubernetes/minikube_setup.sh + +buildCoreDNSImage: &buildCoreDNSImage + - run: + name: Build latest CoreDNS Docker image + command: | + cd ~/go/src/${CIRCLE_PROJECT_USERNAME}/coredns + make coredns SYSTEM="GOOS=linux" && \ + docker build -t coredns . && \ + docker tag coredns localhost:5000/coredns && \ + docker push localhost:5000/coredns + +jobs: + kubernetes-tests: + <<: *integrationDefaults + steps: + - <<: *initWorkingDir + - checkout + - run: + name: Get CI repo + command : | + mkdir -p ~/go/src/${CIRCLE_PROJECT_USERNAME}/ci + git clone https://github.com/${CIRCLE_PROJECT_USERNAME}/ci ~/go/src/${CIRCLE_PROJECT_USERNAME}/ci + - <<: *setupKubernetes + - <<: *buildCoreDNSImage + - run: + name: Run Kubernetes tests + command: | + cd ~/go/src/${CIRCLE_PROJECT_USERNAME}/ci/test/kubernetes + GO111MODULE=on go test -v ./... + +workflows: + version: 2 + integration-tests: + jobs: + - kubernetes-tests