-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
140 lines (114 loc) · 4.96 KB
/
Copy pathMakefile
File metadata and controls
140 lines (114 loc) · 4.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Repository-level development and deployment entry points.
GO ?= go
DOCKER ?= docker
COMPOSE ?= docker compose
GOLANGCI_LINT ?= golangci-lint
GOVULNCHECK ?= go run golang.org/x/vuln/cmd/govulncheck@v1.6.0
BIN_DIR ?= bin
BINARY ?= $(BIN_DIR)/managed-agent
IMAGE ?= managed-agent-go:local
VERSION ?= dev
REVISION ?= $(shell git rev-parse --short=12 HEAD 2>/dev/null || echo unknown)
GOPROXY ?=
LINT_BASE ?= origin/main
MANAGED_AGENT_TEST_DATABASE_URL ?= postgres://postgres:postgres@localhost:5432/managed_agent?sslmode=disable
MANAGED_AGENT_TEST_TEMPORAL_HOSTPORT ?= localhost:7233
MANAGED_AGENT_TEST_NATS_URL ?= nats://localhost:4222
MANAGED_AGENT_TEST_S3_ENDPOINT ?= http://localhost:9000
MANAGED_AGENT_TEST_S3_BUCKET ?= managed-agent-test
MANAGED_AGENT_TEST_S3_ACCESS_KEY ?= minioadmin
MANAGED_AGENT_TEST_S3_SECRET_KEY ?= minioadmin
DOCKER_BUILD_ARGS := --build-arg VERSION=$(VERSION) --build-arg REVISION=$(REVISION)
ifneq ($(strip $(GOPROXY)),)
DOCKER_BUILD_ARGS += --build-arg GOPROXY=$(GOPROXY)
endif
.DEFAULT_GOAL := help
.PHONY: help build lint test test-race test-service test-model-live test-platform-live \
vet verify security docs-check image image-smoke dev-env-init \
local-config local-up local-down local-health local-ps local-logs
help:
@echo "Development"
@echo " make build build $(BINARY)"
@echo " make lint lint changes relative to $(LINT_BASE)"
@echo " make test run unit tests"
@echo " make test-race run tests with the race detector"
@echo " make test-service run tests against PostgreSQL, Temporal, NATS, MinIO, and Docker"
@echo " make test-model-live test an explicitly configured Messages endpoint"
@echo " make test-platform-live run durable text and Docker tool turns against that live model"
@echo " make vet run go vet"
@echo " make verify run the core Go checks"
@echo " make security scan reachable Go code and high-severity npm issues"
@echo " make docs-check install and verify documentation dependencies"
@echo " make dev-env-init create ~/.config/mango/dev.env with mode 0600"
@echo
@echo "Container"
@echo " make image build $(IMAGE)"
@echo " make image-smoke build the image and verify its entrypoint"
@echo
@echo "Local stack"
@echo " make local-up build and start the local stack"
@echo " make local-health wait for local services to become healthy"
@echo " make local-ps show local service status"
@echo " make local-logs follow local service logs"
@echo " make local-down stop the stack (VOLUMES=1 also removes data)"
build:
@mkdir -p $(BIN_DIR)
$(GO) build -trimpath -o $(BINARY) ./cmd/managed-agent
lint:
$(GOLANGCI_LINT) run --new-from-rev=$(LINT_BASE) ./...
test:
$(GO) test ./...
test-race:
$(GO) test -race ./...
test-service:
MANAGED_AGENT_TEST_LIVE_MODEL=0 \
MANAGED_AGENT_TEST_DATABASE_URL='$(MANAGED_AGENT_TEST_DATABASE_URL)' \
MANAGED_AGENT_TEST_TEMPORAL_HOSTPORT='$(MANAGED_AGENT_TEST_TEMPORAL_HOSTPORT)' \
MANAGED_AGENT_TEST_NATS_URL='$(MANAGED_AGENT_TEST_NATS_URL)' \
MANAGED_AGENT_TEST_S3_ENDPOINT='$(MANAGED_AGENT_TEST_S3_ENDPOINT)' \
MANAGED_AGENT_TEST_S3_BUCKET='$(MANAGED_AGENT_TEST_S3_BUCKET)' \
MANAGED_AGENT_TEST_S3_ACCESS_KEY='$(MANAGED_AGENT_TEST_S3_ACCESS_KEY)' \
MANAGED_AGENT_TEST_S3_SECRET_KEY='$(MANAGED_AGENT_TEST_S3_SECRET_KEY)' \
$(GO) test ./... -count=1
test-model-live:
MANAGED_AGENT_TEST_LIVE_MODEL=1 \
$(GO) test ./internal/model -run '^TestAnthropic_LiveMessagesConformance$$' -count=1
test-platform-live:
MANAGED_AGENT_TEST_LIVE_MODEL=1 \
MANAGED_AGENT_TEST_DATABASE_URL='$(MANAGED_AGENT_TEST_DATABASE_URL)' \
MANAGED_AGENT_TEST_TEMPORAL_HOSTPORT='$(MANAGED_AGENT_TEST_TEMPORAL_HOSTPORT)' \
$(GO) test ./internal/temporal -run '^TestVerticalSlice_LiveModel(EndToEnd|ToolStepEndToEnd)$$' -count=1
vet:
$(GO) vet ./...
verify: lint test test-race vet
security:
$(GOVULNCHECK) ./...
npm --prefix website audit --omit=dev --audit-level=high
docs-check:
npm --prefix website ci
npm --prefix website run typecheck
npm --prefix website run build
dev-env-init:
@mkdir -p "$${XDG_CONFIG_HOME:-$$HOME/.config}/mango"
@if test -e "$${XDG_CONFIG_HOME:-$$HOME/.config}/mango/dev.env"; then \
echo "development environment already exists; leaving it unchanged"; \
else \
install -m 600 config/dev.env.example "$${XDG_CONFIG_HOME:-$$HOME/.config}/mango/dev.env"; \
echo "created $${XDG_CONFIG_HOME:-$$HOME/.config}/mango/dev.env"; \
fi
image:
$(DOCKER) build $(DOCKER_BUILD_ARGS) --tag $(IMAGE) .
image-smoke: image
$(DOCKER) run --rm $(IMAGE) serve -h >/dev/null
local-config:
$(MAKE) -C deployments/local config COMPOSE='$(COMPOSE)'
local-up:
$(MAKE) -C deployments/local up COMPOSE='$(COMPOSE)'
local-down:
$(MAKE) -C deployments/local down COMPOSE='$(COMPOSE)' VOLUMES='$(VOLUMES)'
local-health:
$(MAKE) -C deployments/local health COMPOSE='$(COMPOSE)'
local-ps:
$(MAKE) -C deployments/local ps COMPOSE='$(COMPOSE)'
local-logs:
$(MAKE) -C deployments/local logs COMPOSE='$(COMPOSE)'