travis: parallize builds (#947)

* travis: parallize builds

* trying out stuff

* order matters
This commit is contained in:
Miek Gieben
2017-08-19 17:02:16 +01:00
committed by GitHub
parent 02955d7594
commit 219a899772
2 changed files with 32 additions and 10 deletions

View File

@@ -7,13 +7,24 @@ services:
language: go
go:
- 1.7
- 1.8
- 1.7
go_import_path: github.com/coredns/coredns
git:
depth: 3
cache:
directories:
- $GOPATH/src
- $GOPATH/pkg
env:
- ETCD_VERSION=2.3.1 K8S_VERSION=1.5.0 KUBECTL="docker exec hyperkube /hyperkube kubectl" DNS_ARGUMENTS=""
- 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.
@@ -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)

View File

@@ -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)"