Files
pixa/Makefile
T
clawbot 0de6972c2d
check / check (push) Canceled after 0s
Run make devserver from environment variables, not a config file (closes #360)
The target mounted config.dev.yml, which nothing creates, so Docker made
a directory in its place and pixad exited. It now passes a new random
PIXA_SIGNING_KEY each run, printed so the developer can log in, and
PIXA_DEBUG=true so the login form works over plain HTTP. The unused
.gitignore entry for config.dev.yml is removed.

Model: opus-5-5
2026-11-11 21:55:58 +01:00

100 lines
2.5 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 Go on the host after `script/bootstrap --cgo`, not 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, with debug on and a new random signing
# key each run. Log in to the page with the key it prints.
devserver: docker-versioned devserver-stop
@key="$$(head -c 32 /dev/urandom | base64)" && \
docker run -d --name pixad-dev -p 8080:8080 \
-e PIXA_SIGNING_KEY="$$key" -e PIXA_DEBUG=true \
pixa:latest >/dev/null && \
echo "pixad running at http://localhost:8080" && \
echo "signing key: $$key"
# 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