Rudimentary Makefile specifying requirements for a release

This commit is contained in:
Christian Schwarz 2017-09-30 16:40:39 +02:00
parent 45670a7e5d
commit 775bc5caf6
2 changed files with 50 additions and 0 deletions

3
.gitignore vendored
View File

@ -1,3 +1,6 @@
# Build
artifacts/
# Golang
vendor/

47
Makefile Normal file
View File

@ -0,0 +1,47 @@
.PHONY: generate build test vet cover release clean
ROOT := github.com/zrepl/zrepl
SUBPKGS := cmd logger rpc sshbytestream util
_TESTPKGS := $(ROOT) $(foreach p,$(SUBPKGS),$(ROOT)/$(p))
ARTIFACTDIR := artifacts
build: generate
go build -o $(ARTIFACTDIR)/zrepl
generate:
@for pkg in $(_TESTPKGS); do\
go generate "$$pkg" || exit 1; \
done;
test:
@for pkg in $(_TESTPKGS); do \
echo "Testing $$pkg"; \
go test "$$pkg" || exit 1; \
done;
vet:
@for pkg in $(_TESTPKGS); do \
echo "Vetting $$pkg"; \
go vet "$$pkg" || exit 1; \
done;
cover: artifacts
@for pkg in $(_TESTPKGS); do \
profile="$(ARTIFACTDIR)/cover-$$(basename $$pkg).out"; \
go test -coverprofile "$$profile" $$pkg || exit 1; \
if [ -f "$$profile" ]; then \
go tool cover -html="$$profile" -o "$${profile}.html" || exit 2; \
fi; \
done;
artifacts:
mkdir artifacts
release: generate artifacts vet test
GOOS=linux GOARCH=amd64 go build -o "$(ARTIFACTDIR)/zrepl-linux-amd64"
GOOS=freebsd GOARCH=amd64 go build -o "$(ARTIFACTDIR)/zrepl-freebsd-amd64"
clean:
rm -rf "$(ARTIFACTDIR)"