-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathMakefile
More file actions
172 lines (132 loc) · 5.68 KB
/
Makefile
File metadata and controls
172 lines (132 loc) · 5.68 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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
start-milvus:
docker compose -f src/lib/milvus/docker-compose.yaml up -d
stop-milvus:
docker compose -f src/lib/milvus/docker-compose.yaml down
delete-milvus-volumes:
docker compose -f src/lib/milvus/docker-compose.yaml down -v --remove-orphans
start-rabbitmq:
docker compose -f src/lib/rabbitmq/docker-compose.yaml up -d
stop-rabbitmq:
docker compose -f src/lib/rabbitmq/docker-compose.yaml down
delete-rabbitmq-volumes:
docker compose -f src/lib/rabbitmq/docker-compose.yaml down -v --remove-orphans
start-redis:
docker compose -f src/lib/redis/docker-compose.yaml up -d
stop-redis:
docker compose -f src/lib/redis/docker-compose.yaml down
delete-redis-volumes:
docker compose -f src/lib/redis/docker-compose.yaml down -v --remove-orphans
start-neo4j:
docker compose -f src/lib/neo4j/docker-compose.yaml up -d
stop-neo4j:
docker compose -f src/lib/neo4j/docker-compose.yaml down
delete-neo4j-volumes:
docker compose -f src/lib/neo4j/docker-compose.yaml down -v --remove-orphans
build-neo4j-extension:
docker run --rm -v $(PWD)/src/lib/neo4j:/app -w /app maven:3.9-eclipse-temurin-17 mvn compile
package-neo4j-extension:
docker run --rm -v $(PWD)/src/lib/neo4j:/app -w /app maven:3.9-eclipse-temurin-17 mvn package -DskipTests
start-mongo:
docker compose -f src/lib/mongo/docker-compose.yaml up -d
stop-mongo:
docker compose -f src/lib/mongo/docker-compose.yaml down
delete-mongo-volumes:
docker compose -f src/lib/mongo/docker-compose.yaml down -v --remove-orphans
start-api:
ENV=development poetry run python -m uvicorn src.services.api.app:app --host 0.0.0.0 --port 8000 --access-log --log-level info --reload
stop-api:
pkill -f "uvicorn src.services.api.app"
start-mcp:
ENV=development poetry run python -m uvicorn src.services.mcp.app:app --host 0.0.0.0 --port 8001 --access-log --log-level info --reload
MCP_BRIDGE_DIR := mcp-stdio-http-bridge
MCP_BRIDGE_VERSION := $(shell grep '^version = ' $(MCP_BRIDGE_DIR)/Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
MCP_BRIDGE_TAG := mcp-bridge-v$(MCP_BRIDGE_VERSION)
MCP_BRIDGE_TOOLCHAIN := $(shell grep 'channel = ' $(MCP_BRIDGE_DIR)/rust-toolchain.toml | sed 's/.*"\(.*\)"/\1/')
build-mcp-bridge:
cd $(MCP_BRIDGE_DIR) && cargo build --release
install-mcp-bridge-targets:
rustup target add x86_64-apple-darwin --toolchain $(MCP_BRIDGE_TOOLCHAIN)
build-mcp-bridge-x86: install-mcp-bridge-targets
cd $(MCP_BRIDGE_DIR) && cargo build --release --target x86_64-apple-darwin
build-mcp-bridge-all: build-mcp-bridge build-mcp-bridge-x86
push-mcp-bridge-packages: build-mcp-bridge-all
@mkdir -p $(MCP_BRIDGE_DIR)/dist && \
cp $(MCP_BRIDGE_DIR)/target/release/mcp-stdio-http-bridge $(MCP_BRIDGE_DIR)/dist/mcp-stdio-http-bridge-aarch64-apple-darwin && \
cp $(MCP_BRIDGE_DIR)/target/x86_64-apple-darwin/release/mcp-stdio-http-bridge $(MCP_BRIDGE_DIR)/dist/mcp-stdio-http-bridge-x86_64-apple-darwin && \
gh release create $(MCP_BRIDGE_TAG) \
$(MCP_BRIDGE_DIR)/dist/mcp-stdio-http-bridge-aarch64-apple-darwin \
$(MCP_BRIDGE_DIR)/dist/mcp-stdio-http-bridge-x86_64-apple-darwin \
--title "MCP stdio-http bridge $(MCP_BRIDGE_VERSION)" \
--notes "Binary builds for macOS (Apple Silicon and Intel)."
start-nginx:
docker compose -f src/services/webserver/docker-compose.yaml up -d --force-recreate
stop-mcp:
pkill -f "uvicorn src.services.mcp.app"
DEBUG_ENVS := LANGCHAIN_DEBUG="true" LANGCHAIN_VERBOSE="true" DEBUG="true"
start-all:
@if [ "$(filter debug,$(MAKECMDGOALS))" = "debug" ] || [ "$$DEBUG" = "true" ]; then \
echo "DEBUG mode enabled"; \
$(MAKE) start-milvus DEBUG=true & \
$(MAKE) start-rabbitmq DEBUG=true & \
$(MAKE) start-redis DEBUG=true & \
$(MAKE) start-neo4j DEBUG=true & \
$(MAKE) start-mongo DEBUG=true & \
$(MAKE) start-mcp DEBUG=true & \
ENV="development" $(MAKE) start-api DEBUG=true & \
bash -c "export $(DEBUG_ENVS) ENV="development" && poetry run celery -A src.workers.app worker --loglevel=info --pool=threads"; \
else \
$(MAKE) start-milvus & \
$(MAKE) start-rabbitmq & \
$(MAKE) start-redis & \
$(MAKE) start-neo4j & \
$(MAKE) start-mongo & \
$(MAKE) start-mcp & \
ENV="development" $(MAKE) start-api & \
ENV="development" poetry run celery -A src.workers.app worker --loglevel=info --pool=threads; \
fi
debug:
@:
stop-all:
make stop-milvus
make stop-rabbitmq
make stop-redis
make stop-neo4j
make stop-mongo
make stop-api
make stop-mcp
pkill -f celery
clear-all-volumes:
make delete-milvus-volumes
make delete-rabbitmq-volumes
make delete-redis-volumes
make delete-neo4j-volumes
make delete-mongo-volumes
VERSION := $(shell grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/')
container-build:
docker build --no-cache --platform linux/amd64 -t ghcr.io/lumen-labs/brainapi:v$(VERSION) ./
docker tag ghcr.io/lumen-labs/brainapi:v$(VERSION) ghcr.io/lumen-labs/brainapi:latest
container-push:
docker push ghcr.io/lumen-labs/brainapi:v$(VERSION)
docker push ghcr.io/lumen-labs/brainapi:latest
container-release:
BUILD_DATE=$$(date -u +'%Y-%m-%dT%H:%M:%SZ')
BUILD_SHA=$$(git rev-parse HEAD || echo "unknown")
CACHE_BUST=$$(date +%s)
docker build --no-cache \
--build-arg BUILD_DATE="$$BUILD_DATE" \
--build-arg BUILD_SHA="$$BUILD_SHA" \
--build-arg CACHE_BUST="$$CACHE_BUST" \
--platform linux/amd64 \
--label org.opencontainers.image.source="https://github.com/lumen-labs/brainapi2" \
-t ghcr.io/lumen-labs/brainapi:v$(VERSION) ./
docker tag ghcr.io/lumen-labs/brainapi:v$(VERSION) ghcr.io/lumen-labs/brainapi:latest
git tag -s v$(VERSION) -m "Release v$(VERSION)"
docker push ghcr.io/lumen-labs/brainapi:v$(VERSION)
docker push ghcr.io/lumen-labs/brainapi:latest
git push origin v$(VERSION)
v-patch:
poetry version patch
v-minor:
poetry version minor
v-major:
poetry version major