diff --git a/.circleci/config.yml b/.circleci/config.yml index 8caccf5..cbf3db6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,9 +11,7 @@ jobs: steps: - checkout - run: go mod download - - run: go vet ./... - - run: go test ./... -cover -race - - run: go build -race ./cmd/ping + - run: make - run: curl -sfL https://install.goreleaser.com/github.com/goreleaser/goreleaser.sh | BINDIR=/home/circleci/.local/bin sh - run: goreleaser release --skip-publish --snapshot - store_artifacts: diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d4b4bce --- /dev/null +++ b/Makefile @@ -0,0 +1,32 @@ +GO ?= go +GOFMT ?= $(GO)fmt +GOOPTS ?= +GO111MODULE := +pkgs = ./... + +all: style vet build test + +.PHONY: build +build: + @echo ">> building ping" + GO111MODULE=$(GO111MODULE) $(GO) build $(GOOPTS) ./cmd/ping + +.PHONY: style +style: + @echo ">> checking code style" + @fmtRes=$$($(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print)); \ + if [ -n "$${fmtRes}" ]; then \ + echo "gofmt checking failed!"; echo "$${fmtRes}"; echo; \ + echo "Please ensure you are using $$($(GO) version) for formatting code."; \ + exit 1; \ + fi + +.PHONY: test +test: + @echo ">> running all tests" + GO111MODULE=$(GO111MODULE) $(GO) test -race -cover $(GOOPTS) $(pkgs) + +.PHONY: vet +vet: + @echo ">> vetting code" + GO111MODULE=$(GO111MODULE) $(GO) vet $(GOOPTS) $(pkgs)