Files
noema/Makefile
T
Andy Dixon a43fc31643 test: allow the full race suite 30 minutes; trim research scenario stimuli
Research experiments run several sandbox variants with settle windows, and
under the full parallel race suite the experiments package exceeded Go's
default ten-minute limit. The make targets now pass -timeout 30m, and the
ablation and self-model scenarios use the fewest stimuli that still show
their effect.
2026-09-22 19:49:07 +01:00

66 lines
2.2 KiB
Makefile

SHELL := /bin/bash
GOBIN ?= $(shell go env GOPATH)/bin
export PATH := $(GOBIN):$(PATH)
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
LDFLAGS := -X github.com/andydixon/noema/internal/version.Version=$(VERSION)
DEV_DB ?= postgres://noema:noema@127.0.0.1:5433/noema?sslmode=disable
.PHONY: build test test-race test-db lint vet fmt run migrate migrate-down docker dev dev-db dev-down security clean tools help
help: ## list targets
@grep -E '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) | awk 'BEGIN{FS=":.*?## "}{printf " %-14s %s\n",$$1,$$2}'
build: ## build noemad and noemactl into ./bin
go build -ldflags '$(LDFLAGS)' -o bin/ ./cmd/...
test: ## unit tests
go test ./...
test-race: ## unit tests with the race detector
go test -race -timeout 30m ./...
test-db: dev-db ## tests that need PostgreSQL (NOEMA_TEST_DATABASE_URL)
NOEMA_TEST_DATABASE_URL=$(DEV_DB) go test -race -timeout 30m -count=1 ./...
vet: ## go vet
go vet ./...
lint: vet ## staticcheck
staticcheck ./...
fmt: ## gofmt
gofmt -l -w $$(git ls-files '*.go')
security: ## gosec + govulncheck
gosec -quiet -exclude=G104 ./... ; govulncheck ./...
run: build ## run the daemon with .env
set -a; [ -f .env ] && source .env; set +a; ./bin/noemad
migrate: build ## apply migrations to $(DEV_DB)
NOEMA_DATABASE_URL=$(DEV_DB) ./bin/noemactl migrate up
migrate-down: build ## roll back one migration
NOEMA_DATABASE_URL=$(DEV_DB) ./bin/noemactl migrate down
dev-db: ## start PostgreSQL (pgvector) via docker compose
docker compose -f deploy/docker-compose.yml up -d db
@until docker compose -f deploy/docker-compose.yml exec -T db pg_isready -U noema >/dev/null 2>&1; do sleep 0.5; done
dev: dev-db migrate ## start database, migrate, run daemon
$(MAKE) run
dev-down: ## stop development containers
docker compose -f deploy/docker-compose.yml down
docker: ## build container image
docker build -f deploy/Dockerfile -t noema:$(VERSION) .
tools: ## install developer tools
go install honnef.co/go/tools/cmd/staticcheck@latest
go install github.com/securego/gosec/v2/cmd/gosec@latest
go install golang.org/x/vuln/cmd/govulncheck@latest
clean: ## remove build output
rm -rf bin dist coverage.*