-
Notifications
You must be signed in to change notification settings - Fork 273
Expand file tree
/
Copy pathMakefile
More file actions
118 lines (101 loc) · 4.44 KB
/
Makefile
File metadata and controls
118 lines (101 loc) · 4.44 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
ENV := $(shell cat ../../.last_used_env || echo "not-set")
-include ../../.env.${ENV}
LOCAL_BUILD_TARGET ?= build-debug
PREFIX := $(strip $(subst ",,$(PREFIX)))
HOSTNAME := $(shell hostname 2> /dev/null || hostnamectl hostname 2> /dev/null)
$(if $(HOSTNAME),,$(error Failed to determine hostname: both 'hostname' and 'hostnamectl' failed))
# Architecture for builds. Defaults to local arch; override for cross-compilation
# (e.g., BUILD_ARCH=amd64 make build-and-upload from an ARM64 host).
BUILD_ARCH ?= $(shell go env GOARCH)
# Docker platform string. Override for multi-arch builds:
# BUILD_PLATFORM=linux/amd64,linux/arm64 make build-and-upload
BUILD_PLATFORM ?= linux/$(BUILD_ARCH)
expectedMigration := $(shell ./../../scripts/get-latest-migration.sh)
ifeq ($(PROVIDER),aws)
REGISTRY_PREFIX := $(AWS_ACCOUNT_ID).dkr.ecr.$(AWS_REGION).amazonaws.com/$(PREFIX)core
else
REGISTRY_PREFIX := $(GCP_REGION)-docker.pkg.dev/$(GCP_PROJECT_ID)/$(PREFIX)core
endif
.PHONY: generate
generate:
go generate ./...
.PHONY: build
build:
# Allow for passing commit sha directly for docker builds
$(eval COMMIT_SHA ?= $(shell git rev-parse --short HEAD))
$(eval EXPECTED_MIGRATION_TIMESTAMP ?= $(expectedMigration))
CGO_ENABLED=0 go build -o bin/api -ldflags "-X=main.commitSHA=$(COMMIT_SHA) -X=main.expectedMigrationTimestamp=$(EXPECTED_MIGRATION_TIMESTAMP)" .
.PHONY: build-debug
build-debug:
$(eval COMMIT_SHA ?= $(shell git rev-parse --short HEAD))
$(eval EXPECTED_MIGRATION_TIMESTAMP ?= $(expectedMigration))
CGO_ENABLED=1 go build -race -gcflags=all="-N -l" -o bin/api -ldflags "-X=main.commitSHA=$(COMMIT_SHA) -X=main.expectedMigrationTimestamp=$(EXPECTED_MIGRATION_TIMESTAMP)" .
.PHONY: run
run:
make build-debug
POSTGRES_CONNECTION_STRING=$(POSTGRES_CONNECTION_STRING) \
SUPABASE_JWT_SECRETS=$(SUPABASE_JWT_SECRETS) \
GOTRACEBACK=crash \
GODEBUG=madvdontneed=1 \
SANDBOX_ACCESS_TOKEN_HASH_SEED=$(SANDBOX_ACCESS_TOKEN_HASH_SEED) \
CLICKHOUSE_CONNECTION_STRING=$(CLICKHOUSE_CONNECTION_STRING) \
ENVIRONMENT=$(ENVIRONMENT) \
ORCHESTRATOR_PORT=5008 \
NODE_ID=integration-tests \
LOKI_URL=unset \
VOLUME_TOKEN_ISSUER=local.e2b.dev \
VOLUME_TOKEN_SIGNING_METHOD=ES256 \
VOLUME_TOKEN_SIGNING_KEY=ECDSA:LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JR0hBZ0VBTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEJHMHdhd0lCQVFRZ2xwTHZaNnZmSGNYanBvMFYKUzVncW5JM21kdTNBSGJ0UnhmcU1CNWViT3I2aFJBTkNBQVQ3MHBiSE5NY015eFRxTVJiRjN0bXNwemZQTDIwQQpldk1lWGN5MFVDMkRiRXJ2bXBuT2hDamxFT2l4TXVDRzdUekJDdllLNUM0bGdxY0FjVnZVclBwZgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg== \
VOLUME_TOKEN_SIGNING_KEY_NAME=local-dev-2026-03-03 \
./bin/api --port 3000
define setup_local_env
$(eval include .env.local)
$(eval export $(shell sed 's/=.*//' .env.local))
endef
.PHONY: run-local
run-local: $(LOCAL_BUILD_TARGET)
$(call setup_local_env)
NODE_ID=$(HOSTNAME) ./bin/api --port 3000
# Run the API using air
.PHONY: dev
dev:
go tool air
# You run the parametrized command like this:
# make metric=heap interval=90 profiler
.PHONY: profiler
profiler:
go tool pprof -http :9991 http://localhost:6060/debug/pprof/$(metric)?seconds=$(interval)\&timeout=120
.PHONY: build-and-upload
build-and-upload:
$(eval COMMIT_SHA := $(shell git rev-parse --short HEAD))
$(eval EXPECTED_MIGRATION_TIMESTAMP := $(expectedMigration))
cd .. && REGISTRY_PREFIX=$(REGISTRY_PREFIX) \
COMMIT_SHA=$(COMMIT_SHA) \
EXPECTED_MIGRATION_TIMESTAMP=$(EXPECTED_MIGRATION_TIMESTAMP) \
docker buildx bake -f api/docker-bake.hcl --push
.PHONY: test
test:
go test -race -v ./...
.PHONY: lint
lint:
golangci-lint run --fix ./...
.PHONY: generate-key
generate-local-key:
# Generate a new ECDSA key pair (P-256)
openssl ecparam -name prime256v1 -genkey -noout -out private.pem
openssl ec -in private.pem -pubout -out public.pem
# Update .env.local with the new private key and name stamped with today's date
KEY=$$(base64 -w0 private.pem); \
NAME=local-dev-$$(date +%F); \
if grep -q '^VOLUME_TOKEN_SIGNING_KEY=' .env.local; then \
sed -i "s|^VOLUME_TOKEN_SIGNING_KEY=.*|VOLUME_TOKEN_SIGNING_KEY=ECDSA:$${KEY}|" .env.local; \
else \
echo "VOLUME_TOKEN_SIGNING_KEY=ECDSA:$${KEY}" >> .env.local; \
fi; \
if grep -q '^VOLUME_TOKEN_SIGNING_KEY_NAME=' .env.local; then \
sed -i "s|^VOLUME_TOKEN_SIGNING_KEY_NAME=.*|VOLUME_TOKEN_SIGNING_KEY_NAME=$${NAME}|" .env.local; \
else \
echo "VOLUME_TOKEN_SIGNING_KEY_NAME=$${NAME}" >> .env.local; \
fi
echo "Use the following base64 encoded private key to validate the token's signature:"
echo "local-dev:ECDSA:$$(base64 -w0 public.pem)"