Makefile 2.17 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# Copyright 2017 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

Yerken's avatar
Yerken committed
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
# cover-html creates coverage report for whole project excluding vendor and opens result in the default browser
.PHONY: cover cover-html

cover:
	go get github.com/wadey/gocovmerge
	$(eval PKGS := $(shell go list ./... | grep -v /vendor/))
	$(eval PKGS_DELIM := $(shell echo $(PKGS) | sed -e 's/ /,/g'))
	go list -f '{{if or (len .TestGoFiles) (len .XTestGoFiles)}}go test -test.v -test.timeout=120s -covermode=count -coverprofile={{.Name}}_{{len .Imports}}_{{len .Deps}}.coverprofile -coverpkg $(PKGS_DELIM) {{.ImportPath}}{{end}}' $(PKGS) | xargs -0 sh -c 
	gocovmerge `ls *.coverprofile` > cover.out
	rm *.coverprofile

cover-html: cover
	go tool cover -html cover.out


30
# The verify target runs tasks similar to the CI tasks, but without code coverage
ideahitme's avatar
ideahitme committed
31
.PHONY: verify test
Yerken's avatar
Yerken committed
32

ideahitme's avatar
ideahitme committed
33 34 35 36
test:
	go test -v $(shell go list ./... | grep -v /vendor/)

verify: test
37 38
	vendor/github.com/kubernetes/repo-infra/verify/verify-boilerplate.sh --rootdir=${CURDIR}
	vendor/github.com/kubernetes/repo-infra/verify/verify-go-src.sh -v --rootdir ${CURDIR}
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

# The build targets allow to build the binary and docker image
.PHONY: build build.docker

PROJECT   ?= zalando-docker
BINARY    ?= external-dns
SOURCES    = $(shell find . -name '*.go')
IMAGE     ?= gcr.io/$(PROJECT)/$(BINARY)
VERSION   ?= $(shell git describe --tags --always --dirty)

build: build/$(BINARY)

build/$(BINARY): $(SOURCES)
	CGO_ENABLED=0 go build -o build/$(BINARY) .

build.docker: build/linux-amd64/$(BINARY)
	docker build --rm --tag "$(IMAGE):$(VERSION)" .

build/linux-amd64/$(BINARY): $(SOURCES)
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o build/linux-amd64/$(BINARY) .