# 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. # cover-html creates coverage report for whole project excluding vendor and opens result in the default browser .PHONY: cover cover-html .DEFAULT_GOAL := build 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 dep: curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh dep ensure -vendor-only # The verify target runs tasks similar to the CI tasks, but without code coverage .PHONY: verify test test: go test -v -race $(shell go list ./... | grep -v /vendor/) verify: test 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} # The build targets allow to build the binary and docker image .PHONY: build build.docker BINARY ?= external-dns SOURCES = $(shell find . -name '*.go') IMAGE ?= registry.opensource.zalan.do/teapot/$(BINARY) VERSION ?= $(shell git describe --tags --always --dirty) BUILD_FLAGS ?= -v LDFLAGS ?= -X github.com/kubernetes-incubator/external-dns/pkg/apis/externaldns.Version=$(VERSION) -w -s build: build/$(BINARY) build/$(BINARY): $(SOURCES) CGO_ENABLED=0 go build -o build/$(BINARY) $(BUILD_FLAGS) -ldflags "$(LDFLAGS)" . build.push: build.docker docker push "$(IMAGE):$(VERSION)" build.docker: docker build --rm --tag "$(IMAGE):$(VERSION)" . clean: @rm -rf build