check / check (push) Successful in 1m37s
A plain `docker build .`, which is how upaas builds, stamped `dev`: `.dockerignore` left out `.git` and the builder declared `ARG VERSION=dev`. `.dockerignore` now sends `.git` without `.git/config`, which can hold a credential, and lists no tracked file, which git in the build would count as deleted and mark `-dirty`. `ARG VERSION` has no default. The Makefile takes a non-empty `VERSION` from the command line or the environment, so a build arg still wins (`script/docker` keeps passing one); otherwise `git describe` runs in the builder. A new `make version` prints the version, and the builder fails when the context carries `.git`, directory or file, and it comes out empty, `dev` or `unknown`. Model: opus-5-5
55 lines
1.1 KiB
Makefile
55 lines
1.1 KiB
Makefile
.PHONY: all bootstrap setup build version lint fmt fmt-check test check clean hooks docker
|
|
|
|
BINARY := dnswatcher
|
|
# VERSION given on the command line (`make build VERSION=...`) or in the
|
|
# environment, which is how the Dockerfile's VERSION build arg arrives,
|
|
# wins over what `git describe` says of this checkout. An empty one counts
|
|
# as not given; `override` is what replaces an empty command-line value.
|
|
ifeq ($(VERSION),)
|
|
override VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
endif
|
|
LDFLAGS := -X main.Version=$(VERSION)
|
|
|
|
# Standard targets are thin shims; the implementations live in script/
|
|
# per the scripts-to-rule-them-all pattern (see the Entrypoints section
|
|
# of README.md).
|
|
|
|
all: check build
|
|
|
|
bootstrap:
|
|
@script/bootstrap
|
|
|
|
setup:
|
|
@script/setup
|
|
|
|
build:
|
|
go build -ldflags "$(LDFLAGS)" -o bin/$(BINARY) ./cmd/dnswatcher
|
|
|
|
# Prints the version `make build` stamps; the Dockerfile checks it.
|
|
version:
|
|
@echo "$(VERSION)"
|
|
|
|
test:
|
|
@script/test
|
|
|
|
lint:
|
|
@script/lint
|
|
|
|
fmt:
|
|
@script/fmt
|
|
|
|
fmt-check:
|
|
@script/fmt-check
|
|
|
|
check:
|
|
@script/check
|
|
|
|
docker:
|
|
@script/docker
|
|
|
|
hooks:
|
|
@script/install-precommit
|
|
|
|
clean:
|
|
rm -rf bin/
|