76 lines
2.1 KiB
Makefile
76 lines
2.1 KiB
Makefile
.PHONY: all test lint coverage ci get build clean
|
|
|
|
ifneq ($(V),1)
|
|
Q := @
|
|
NQMAKE := $(MAKE) --no-print-directory
|
|
MAKE := $(Q)$(MAKE) --no-print-directory
|
|
endif
|
|
|
|
GOPATH := $(shell go env GOPATH)
|
|
GOLANGCI_LINT_VERSION ?= 1.16.0
|
|
PACKAGE ?= yes
|
|
VERSION_PACKAGE ?= main
|
|
PROJECT_NAME ?= unknown-project
|
|
BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD)
|
|
|
|
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
|
current_dir := $(patsubst %/,%,$(dir $(mkfile_path)))
|
|
|
|
TARGETS := $(shell go list ./... | grep -v /vendor/)
|
|
|
|
all: test
|
|
|
|
ci:
|
|
$(MAKE) get
|
|
$(MAKE) lint
|
|
$(MAKE) test
|
|
$(MAKE) coverage
|
|
$(MAKE) build
|
|
ifeq ($(PACKAGE),yes)
|
|
$(MAKE) deb
|
|
$(MAKE) dist
|
|
endif
|
|
|
|
clean:
|
|
$(Q)rm -rf build
|
|
$(Q)rm -f *.deb
|
|
|
|
VERSION := $(shell go run $(GOPATH)/src/src.dualinventive.com/go/common/version/main.go)
|
|
|
|
LDFLAGS := -X $(VERSION_PACKAGE).ApplicationVersion=$(VERSION) -X $(VERSION_PACKAGE).ApplicationName=$(PROJECT_NAME)
|
|
|
|
test:
|
|
$(Q)echo " == Running go test =="
|
|
$(Q)go test -v -race $(TARGETS)
|
|
|
|
build:
|
|
$(Q)echo " == Running go build =="
|
|
$(Q)for i in $(TARGETS); do cd $(GOPATH)/src/$$i;go build -ldflags="-s -w $(LDFLAGS)" -v;cd ->/dev/null; done
|
|
|
|
get:
|
|
$(Q)echo " == Running go get =="
|
|
$(Q)go get -t -v $(TARGETS)
|
|
|
|
lint: build/golangci-lint
|
|
$(Q)echo " == Running golangci-lint =="
|
|
$(Q)bash -c "./build/golangci-lint run --config=$(GOPATH)/src/src.dualinventive.com/go/common/golangci.yml | tee build/golint.log; test \$${PIPESTATUS[0]} -eq 0"
|
|
|
|
build/golangci-lint:
|
|
$(Q)mkdir -p build
|
|
$(Q)echo " == Downloading golangci-lint =="
|
|
$(Q)curl -sL https://github.com/golangci/golangci-lint/releases/download/v$(GOLANGCI_LINT_VERSION)/golangci-lint-$(GOLANGCI_LINT_VERSION)-linux-amd64.tar.gz | tar xvz --strip-components=1 -C build
|
|
|
|
coverage:
|
|
$(Q)mkdir -p build
|
|
$(Q)go get github.com/axw/gocov/gocov
|
|
$(Q)go get github.com/AlekSi/gocov-xml
|
|
$(Q)gocov test $(TARGETS) > build/coverage.json
|
|
$(Q)sed -i -e 's|'$WORKSPACE'/||g' build/coverage.json
|
|
$(Q)gocov-xml < build/coverage.json > build/coverage.xml
|
|
|
|
dist:
|
|
$(current_dir)/dist.sh
|
|
|
|
%:
|
|
env PROJECT_NAME=$(PROJECT_NAME) go run $(GOPATH)/src/src.dualinventive.com/go/common/$@/main.go
|