From 219a89977258d438932edfa34b3db6fd36154172 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sat, 19 Aug 2017 17:02:16 +0100 Subject: [PATCH] travis: parallize builds (#947) * travis: parallize builds * trying out stuff * order matters --- .travis.yml | 21 ++++++++++++++++----- Makefile | 21 ++++++++++++++++----- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index c6724f8aa..306853cb1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,14 +7,25 @@ services: language: go go: - - 1.7 - 1.8 + - 1.7 go_import_path: github.com/coredns/coredns -env: - - ETCD_VERSION=2.3.1 K8S_VERSION=1.5.0 KUBECTL="docker exec hyperkube /hyperkube kubectl" DNS_ARGUMENTS="" +git: + depth: 3 +cache: + directories: + - $GOPATH/src + - $GOPATH/pkg + +env: + - TEST_TYPE=coverage ETCD_VERSION=2.3.1 K8S_VERSION=1.5.0 KUBECTL="docker exec hyperkube /hyperkube kubectl" + - TEST_TYPE=integration ETCD_VERSION=2.3.1 K8S_VERSION=1.5.0 KUBECTL="docker exec hyperkube /hyperkube kubectl" + - TEST_TYPE=core ETCD_VERSION=2.3.1 K8S_VERSION=1.5.0 KUBECTL="docker exec hyperkube /hyperkube kubectl" + - TEST_TYPE=middleware ETCD_VERSION=2.3.1 K8S_VERSION=1.5.0 KUBECTL="docker exec hyperkube /hyperkube kubectl" + # In the Travis VM-based build environment, IPv6 networking is not # enabled by default. The sysctl operations below enable IPv6. # IPv6 is needed by some of the CoreDNS test cases. The VM environment @@ -31,7 +42,7 @@ before_install: before_script: - docker run -d --net=host --name=etcd quay.io/coreos/etcd:v$ETCD_VERSION - - docker run -d --volume=/:/rootfs:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:rw --volume=/var/lib/kubelet/:/var/lib/kubelet:rw --volume=/var/run:/var/run:rw --volume=`pwd`/.travis:/travis --net=host --pid=host --privileged --name=hyperkube gcr.io/google_containers/hyperkube-amd64:v$K8S_VERSION /hyperkube kubelet --containerized --hostname-override=127.0.0.1 --api-servers=http://localhost:8080 --config=/etc/kubernetes/manifests $DNS_ARGUMENTS --allow-privileged --v=2 + - docker run -d --volume=/:/rootfs:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:rw --volume=/var/lib/kubelet/:/var/lib/kubelet:rw --volume=/var/run:/var/run:rw --volume=`pwd`/.travis:/travis --net=host --pid=host --privileged --name=hyperkube gcr.io/google_containers/hyperkube-amd64:v$K8S_VERSION /hyperkube kubelet --containerized --hostname-override=127.0.0.1 --api-servers=http://localhost:8080 --config=/etc/kubernetes/manifests --allow-privileged --v=2 # Wait until kubectl is ready - for i in {1..10}; do $KUBECTL version && break || sleep 5; done - $KUBECTL version @@ -44,7 +55,7 @@ before_script: - docker ps -a script: - - make coverage + - make TEST_TYPE=$TEST_TYPE travis after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/Makefile b/Makefile index 5e5ec4ffa..68beb7011 100644 --- a/Makefile +++ b/Makefile @@ -28,10 +28,20 @@ godeps: go get golang.org/x/net/context go get golang.org/x/text -.PHONY: coverage -coverage: check - set -e -x - echo "" > coverage.txt +.PHONY: travis +travis: check +ifeq ($(TEST_TYPE),core) + ( cd request ; go test -v -tags 'etcd k8s' -race ./... ) + ( cd core ; go test -v -tags 'etcd k8s' -race ./... ) + ( cd coremain go test -v -tags 'etcd k8s' -race ./... ) +endif +ifeq ($(TEST_TYPE),integration) + ( cd test ; go test -v -tags 'etcd k8s' -race ./... ) +endif +ifeq ($(TEST_TYPE),middleware) + ( cd middleware ; go test -v -tags 'etcd k8s' -race ./... ) +endif +ifeq ($(TEST_TYPE),coverage) for d in `go list ./... | grep -v vendor`; do \ go test -v -tags 'etcd k8s' -race -coverprofile=cover.out -covermode=atomic -bench=. $$d || exit 1; \ if [ -f cover.out ]; then \ @@ -39,6 +49,8 @@ coverage: check rm cover.out; \ fi; \ done +endif + core/zmiddleware.go core/dnsserver/zdirectives.go: middleware.cfg go generate coredns.go @@ -55,7 +67,6 @@ fmt: .PHONY: lint lint: - ## run go lint, suggestion only (not enforced) go get -u github.com/golang/lint/golint @test -z "$$(find . -type d | grep -vE '(/vendor|^\.$$|/.git|/.travis)' | grep -vE '(^\./pb)' | xargs golint \ | grep -vE "context\.Context should be the first parameter of a function" | tee /dev/stderr)"