check / check (push) Canceled after 0s
A hit opens the variant file and nothing else: its content type comes from the file's first bytes, and a file in no output format is a miss and is made again. Its access time and hit count are handed, without waiting, to the goroutine that wrote late counts, which now writes every count and the access times once a second; the access times wait in a channel of 10,000 that drops the rest. checkNegativeCache leaves expired rows to CleanExpired. The .meta files, metaCache, Lookup and golang-lru go, with their tests; tests that read counts after Get wait for the background write. make bench runs a parallel cache hit benchmark, outside make check. Model: opus-5-5
96 lines
2.3 KiB
Makefile
96 lines
2.3 KiB
Makefile
.PHONY: bootstrap setup check lint test fmt fmt-check build clean docker docker-smoke docker-versioned docker-test devserver devserver-stop hooks loadtest bench
|
|
|
|
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
LDFLAGS := -X main.Version=$(VERSION)
|
|
|
|
# Use nix-shell to provide CGO dependencies unless they are already available
|
|
# (e.g. inside an existing nix-shell).
|
|
HAS_PKGCONFIG := $(shell command -v pkg-config 2>/dev/null)
|
|
ifdef HAS_PKGCONFIG
|
|
NIX_RUN_PREFIX =
|
|
NIX_RUN_SUFFIX =
|
|
else
|
|
NIX_RUN_PREFIX = nix-shell -p pkg-config vips libheif git --run '
|
|
NIX_RUN_SUFFIX = '
|
|
endif
|
|
|
|
# Default target: run all checks
|
|
check:
|
|
@script/check
|
|
|
|
bootstrap:
|
|
@script/bootstrap
|
|
|
|
setup:
|
|
@script/setup
|
|
|
|
# Check formatting without modifying files
|
|
fmt-check:
|
|
@script/fmt-check
|
|
|
|
# Format code
|
|
fmt:
|
|
@script/fmt
|
|
|
|
# Run linter (the lint phase of the Dockerfile)
|
|
lint:
|
|
@script/lint
|
|
|
|
# Run tests (the test phase of the Dockerfile)
|
|
test:
|
|
@script/test
|
|
|
|
# Build the binary
|
|
build:
|
|
@echo "Building pixad..."
|
|
$(NIX_RUN_PREFIX)CGO_ENABLED=1 go build -ldflags "$(LDFLAGS)" -o ./bin/pixad ./cmd/pixad$(NIX_RUN_SUFFIX)
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
rm -rf bin/
|
|
rm -rf ./data
|
|
|
|
# Build Docker image (tagged via script/projectname)
|
|
docker:
|
|
@script/docker
|
|
|
|
# Build the image, start it, and wait for its healthcheck (needs Docker;
|
|
# not part of check)
|
|
docker-smoke:
|
|
@script/docker-smoke
|
|
|
|
# Measure throughput, latency and peak memory with the default duration and
|
|
# number of clients (needs Docker and Go; a benchmark, not part of check)
|
|
loadtest:
|
|
@script/loadtest
|
|
|
|
# Serve cache hits in parallel through the image handler and report hits per
|
|
# second (needs Docker; a benchmark, not part of check)
|
|
bench:
|
|
@script/bench
|
|
|
|
# Build Docker image as `make docker` does, and also tag it pixa:$(VERSION)
|
|
docker-versioned:
|
|
@script/docker
|
|
docker tag pixa pixa:$(VERSION)
|
|
|
|
# Run tests in Docker, as `make test` does
|
|
docker-test:
|
|
@script/test
|
|
|
|
# Run local dev server in Docker
|
|
devserver: docker-versioned devserver-stop
|
|
docker run -d --name pixad-dev -p 8080:8080 \
|
|
-v $(CURDIR)/config.dev.yml:/etc/pixa/config.yml:ro \
|
|
pixa:latest
|
|
@echo "pixad running at http://localhost:8080"
|
|
|
|
# Stop dev server
|
|
devserver-stop:
|
|
-docker stop pixad-dev 2>/dev/null
|
|
-docker rm pixad-dev 2>/dev/null
|
|
|
|
# Install pre-commit hook
|
|
hooks:
|
|
@script/install-precommit
|