Files

42 lines
1.2 KiB
Makefile

# The Go toolchain is the primary interface to this repo: `go test ./...` works
# on a clean checkout. This file covers the two things that need more than a
# one-word go command — the checks CI gates on, and a version-stamped image.
IMAGE ?= zot-ephemeral-ttl
TAG ?= dev
.DEFAULT_GOAL := test
.PHONY: test
test:
go test -race ./...
# Everything CI gates on, in the order CI runs it.
.PHONY: check
check:
@unformatted=$$(gofmt -l .); \
if [ -n "$$unformatted" ]; then \
echo "not gofmt-formatted:"; echo "$$unformatted"; \
echo "run 'gofmt -w .' to fix."; exit 1; \
fi
go vet ./...
@cp go.mod .go.mod.tidycheck && cp go.sum .go.sum.tidycheck; \
go mod tidy; \
rc=0; \
if ! cmp -s go.mod .go.mod.tidycheck || ! cmp -s go.sum .go.sum.tidycheck; then \
echo "go.mod/go.sum were not tidy; 'go mod tidy' has fixed them — commit the result."; \
rc=1; \
fi; \
rm -f .go.mod.tidycheck .go.sum.tidycheck; \
exit $$rc
go test -race ./...
.PHONY: image
image:
docker build \
--build-arg VERSION=$$(git describe --tags --always 2>/dev/null || echo dev) \
--build-arg COMMIT=$$(git rev-parse --short HEAD 2>/dev/null || echo unknown) \
--build-arg BUILD_DATE=$$(date -u +%Y-%m-%dT%H:%M:%SZ) \
--tag $(IMAGE):$(TAG) \
.