-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
266 lines (218 loc) · 8.88 KB
/
Makefile
File metadata and controls
266 lines (218 loc) · 8.88 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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
.PHONY: help \
install-dev \
demo-up \
demo-desktop \
demo-desktop-verify \
demo \
demo-verify \
demo-down \
demo-checklist \
check-fresh-clone \
check-no-orphans \
check-no-duplicates \
check-invariants \
check-version-consistency \
check-docs-consistency \
check-release-tag \
gen-types \
bundle-edge \
check-edge-preflight \
check-telemetry-transport \
edge-shell \
dev-edge \
check-tauri-config \
check-desktop-warning-budget \
dev-desktop \
check-desktop-ts \
build-desktop-web \
check-desktop-rust \
build-desktop \
test-edge \
test-cloud \
test \
docker-build \
smoke-edge \
smoke-cloud \
smoke-cloud-recovery \
smoke-admin \
smoke-desktop \
smoke-bundling \
perf-edge \
support-bundle \
check-local-support-bundle \
runbook-lock \
release-evidence \
pilot-evidence \
release-check \
clean
help:
@echo "SentinelID v2.6.0 Commands"
@echo ""
@echo "Setup"
@echo " make install-dev Install edge/admin/desktop dev dependencies from lockfiles"
@echo ""
@echo "Demo"
@echo " make demo-up Start cloud/admin/postgres and wait for health"
@echo " make demo-desktop Launch desktop in demo mode (set DEMO_AUTO_CLOSE_SECONDS for scripted close)"
@echo " make demo Run demo-up then demo-desktop"
@echo " make demo-verify Run non-interactive demo verification suite"
@echo " make demo-desktop-verify Launch desktop and auto-close (CI-friendly, no Docker)"
@echo " make demo-down Stop demo stack (use V=1 to remove volumes)"
@echo " make demo-checklist Print demo checklist path (OPEN=1 to open locally)"
@echo " make check-fresh-clone Clone current branch to a temp dir and run the beginner path"
@echo " make check-no-orphans Verify no orphan edge process is running"
@echo " make check-no-duplicates Verify duplicate source artifact pairs are absent"
@echo " make check-invariants Validate loopback/auth/support-bundle runtime invariants"
@echo " make check-version-consistency Verify release-critical version markers stay aligned"
@echo " make check-docs-consistency Validate canonical docs commands and env names"
@echo " make check-release-tag Verify RELEASE_EXPECT_TAG points to HEAD"
@echo ""
@echo "Build"
@echo " make bundle-edge Bundle edge runtime for desktop packaging"
@echo " make check-edge-preflight Validate edge Poetry env imports (pydantic_settings/uvicorn)"
@echo " make check-telemetry-transport Run live telemetry transport preflight checks"
@echo " make edge-shell Open a shell inside edge Poetry environment"
@echo " make dev-edge Run edge API locally (foreground)"
@echo " make check-tauri-config Validate required Tauri config keys"
@echo " make check-desktop-warning-budget Run desktop cargo check and enforce warning budget"
@echo " make check-desktop-ts Run desktop TypeScript checks"
@echo " make build-desktop-web Build desktop frontend"
@echo " make check-desktop-rust Cargo check for Tauri runtime"
@echo " make build-desktop Produce desktop distribution bundle (bundled edge runner)"
@echo " make gen-types Regenerate TypeScript types from OpenAPI contracts"
@echo ""
@echo "Test"
@echo " make test-edge Run edge pytest suite"
@echo " make test-cloud Run cloud pytest suite"
@echo " make test Run edge + cloud tests"
@echo ""
@echo "Validation"
@echo " make docker-build Build cloud/admin Docker images"
@echo " make smoke-edge Run edge smoke script"
@echo " make smoke-cloud Run cloud smoke script"
@echo " make smoke-cloud-recovery Validate edge outbox recovery through cloud outage"
@echo " make smoke-admin Run admin smoke script"
@echo " make smoke-desktop Run desktop launcher smoke script"
@echo " make smoke-bundling Validate bundled desktop runtime (no Poetry at runtime)"
@echo " make perf-edge Run edge benchmark (writes scripts/perf/out/*.json)"
@echo " make support-bundle Generate sanitized support bundle artifact"
@echo " make check-local-support-bundle Validate latest local support bundle artifact"
@echo " make runbook-lock Build known-good runbook lock artifact under output/release/"
@echo " make release-evidence Build release evidence pack under output/release/"
@echo " make pilot-evidence Build pilot evidence index under output/release/"
@echo " make release-check Run full release checklist"
@echo ""
@echo "Docs"
@echo " RUNBOOK.md is the authoritative run/test path"
install-dev:
@./scripts/install_dev.sh
bundle-edge:
@./scripts/bundle_edge_venv.sh
demo-up:
@./scripts/demo_up.sh
demo-desktop:
@./scripts/demo_desktop.sh
demo-desktop-verify:
@DEMO_AUTO_CLOSE_SECONDS="$${DEMO_AUTO_CLOSE_SECONDS:-20}" TELEMETRY_ENABLED=0 ALLOW_FALLBACK_EMBEDDINGS=1 ./scripts/demo_desktop.sh
demo: demo-up demo-desktop
demo-verify:
@./scripts/demo_verify.sh
demo-down:
@./scripts/demo_down.sh $(if $(V),--volumes,)
demo-checklist:
@echo "$(PWD)/docs/DEMO_CHECKLIST.md"
@if [ "$(OPEN)" = "1" ]; then \
if command -v open >/dev/null 2>&1; then open "$(PWD)/docs/DEMO_CHECKLIST.md"; \
elif command -v xdg-open >/dev/null 2>&1; then xdg-open "$(PWD)/docs/DEMO_CHECKLIST.md"; \
else echo "No opener found. Open docs/DEMO_CHECKLIST.md manually."; \
fi; \
fi
check-fresh-clone:
@./scripts/check_fresh_clone_bootstrap.sh
check-no-orphans:
@./scripts/check_no_orphan_edge.sh
check-no-duplicates:
@./scripts/release/check_no_duplicate_pairs.sh
check-version-consistency:
@./scripts/release/check_version_consistency.sh
check-docs-consistency:
@./scripts/release/check_docs_consistency.sh
check-release-tag:
@./scripts/release/check_release_tag_alignment.sh
gen-types:
@./scripts/gen_types.sh
check-edge-preflight:
@./scripts/dev/edge_env.sh preflight
check-telemetry-transport:
@./scripts/check_telemetry_transport_preflight.sh
edge-shell:
@./scripts/dev/edge_env.sh shell
dev-edge:
@EDGE_ENV=dev EDGE_HOST=127.0.0.1 EDGE_PORT=8787 EDGE_AUTH_TOKEN=devtoken ALLOW_FALLBACK_EMBEDDINGS=$${ALLOW_FALLBACK_EMBEDDINGS:-1} ./scripts/dev/edge_env.sh run
check-tauri-config:
@./scripts/dev/check_tauri_config.py
check-desktop-warning-budget:
@mkdir -p output/ci/logs
@make check-desktop-rust > output/ci/logs/desktop_cargo_check.log 2>&1
@./scripts/ci/check_desktop_warning_budget.py output/ci/logs/desktop_cargo_check.log
dev-desktop:
@make check-tauri-config
@cd apps/desktop && npm run tauri:dev
check-desktop-ts:
@cd apps/desktop && npm run typecheck
build-desktop-web:
@cd apps/desktop && npm run build
check-desktop-rust:
@cd apps/desktop/src-tauri && cargo check
build-desktop: build-desktop-web check-desktop-rust
@make check-tauri-config
@[ -x apps/desktop/resources/edge/pyvenv_active/bin/python ] || [ -x apps/desktop/resources/edge/pyvenv/bin/python ] || (echo "Bundled edge runtime missing. Run 'make bundle-edge' first."; exit 1)
@cd apps/desktop && npm run tauri:build
test-edge:
@cd apps/edge && if command -v poetry >/dev/null 2>&1; then poetry run pytest -q; elif [ -x .venv/bin/poetry ]; then .venv/bin/poetry run pytest -q; else echo "Poetry not found. Install Poetry or create apps/edge/.venv with Poetry."; exit 1; fi
test-cloud:
@cd apps/cloud && if [ -x .venv/bin/python ]; then .venv/bin/python -m pytest -q; else python3 -m pip install -r requirements-dev.txt >/dev/null && python3 -m pytest -q; fi
test: test-edge test-cloud
docker-build:
@./scripts/docker_build.sh
smoke-edge:
@./scripts/smoke_test_edge.sh
smoke-cloud:
@./scripts/smoke_test_cloud.sh
smoke-cloud-recovery:
@./scripts/smoke_test_cloud_recovery.sh
smoke-admin:
@./scripts/smoke_test_admin.sh
smoke-desktop:
@./scripts/smoke_test_desktop.sh
smoke-bundling:
@./scripts/smoke_test_bundling.sh
check-invariants:
@./scripts/check_invariants.py \
--edge-url "$${EDGE_URL:-http://127.0.0.1:8787}" \
--edge-token "$${EDGE_TOKEN:-$${EDGE_AUTH_TOKEN:-devtoken}}" \
--cloud-url "$${CLOUD_URL:-http://127.0.0.1:8000}" \
--admin-token "$${ADMIN_TOKEN:-$${ADMIN_API_TOKEN:-dev-admin-token}}"
perf-edge:
@python3 scripts/perf/bench_edge.py --base-url http://127.0.0.1:8787 --token devtoken --attempts 8 --frames 12
support-bundle:
@./scripts/support_bundle.sh
check-local-support-bundle:
@./scripts/check_local_support_bundle_sanitization.sh
runbook-lock:
@./scripts/release/build_runbook_lock.sh
release-evidence:
@./scripts/release/build_evidence_pack.sh
pilot-evidence:
@./scripts/release/build_pilot_evidence_index.sh
release-check:
@./scripts/release/checklist.sh
clean:
@rm -rf apps/desktop/resources/edge/pyvenv_active
@rm -rf apps/desktop/resources/edge/pyvenv
@rm -rf apps/desktop/resources/edge/pyvenv_stale*
@rm -rf apps/desktop/src-tauri/target
@rm -rf apps/desktop/dist
@cd apps/edge && find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
@cd apps/cloud && find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
.DEFAULT_GOAL := help