88 lines
2.6 KiB
Makefile
88 lines
2.6 KiB
Makefile
SHELL := /bin/bash
|
|
|
|
UV ?= uv
|
|
PYTHON := $(UV) run --no-sync python
|
|
NPM ?= npm
|
|
HOST ?= 127.0.0.1
|
|
PORT ?= 8732
|
|
LOG_DIR ?= state/logs
|
|
PID_FILE ?= state/deployment-manager.pid
|
|
LOG_FILE ?= $(LOG_DIR)/deployment-manager.log
|
|
|
|
.PHONY: help setup frontend-install build run start stop restart health logs deploy py-compile clean
|
|
|
|
help:
|
|
@echo "Targets:"
|
|
@echo " setup Install Python and frontend dependencies"
|
|
@echo " build Compile backend files and build the React frontend"
|
|
@echo " run Build and run the Deployment Manager in the foreground"
|
|
@echo " start Build and start the Deployment Manager in the background"
|
|
@echo " stop Stop the background Deployment Manager"
|
|
@echo " restart Restart the background Deployment Manager"
|
|
@echo " health Check the manager health endpoint"
|
|
@echo " logs Tail the manager log"
|
|
@echo " deploy Deploy PROJECT_PATH through the manager"
|
|
|
|
node_modules: package.json
|
|
$(NPM) install
|
|
|
|
frontend-install: node_modules
|
|
|
|
setup: frontend-install
|
|
$(UV) venv --allow-existing
|
|
$(UV) pip install -e .
|
|
|
|
py-compile:
|
|
$(PYTHON) -m py_compile app/*.py scripts/*.py
|
|
|
|
build: setup py-compile
|
|
$(NPM) run build
|
|
|
|
run: build
|
|
HOST="$(HOST)" PORT="$(PORT)" $(PYTHON) -m app.main
|
|
|
|
start: build
|
|
@mkdir -p $(LOG_DIR)
|
|
@if curl -fsS http://$(HOST):$(PORT)/api/health >/dev/null 2>&1; then \
|
|
echo "Deployment Manager already running at http://$(HOST):$(PORT)"; \
|
|
else \
|
|
$(PYTHON) scripts/start_manager.py --host $(HOST) --port $(PORT) --log-file $(LOG_FILE) --pid-file $(PID_FILE); \
|
|
echo "Deployment Manager starting at http://$(HOST):$(PORT)"; \
|
|
fi
|
|
|
|
stop:
|
|
@if [ -f $(PID_FILE) ] && kill -0 $$(cat $(PID_FILE)) >/dev/null 2>&1; then \
|
|
kill $$(cat $(PID_FILE)); \
|
|
rm -f $(PID_FILE); \
|
|
echo "Deployment Manager stopped"; \
|
|
else \
|
|
pid=$$(lsof -tiTCP:$(PORT) -sTCP:LISTEN 2>/dev/null | head -n 1); \
|
|
if [ -n "$$pid" ]; then \
|
|
kill $$pid; \
|
|
echo "Deployment Manager stopped"; \
|
|
else \
|
|
echo "Deployment Manager is not running"; \
|
|
fi; \
|
|
fi
|
|
|
|
restart: stop start
|
|
|
|
health:
|
|
curl -fsS http://$(HOST):$(PORT)/api/health
|
|
@echo
|
|
|
|
logs:
|
|
@mkdir -p $(LOG_DIR)
|
|
@touch $(LOG_FILE)
|
|
tail -f $(LOG_FILE)
|
|
|
|
deploy:
|
|
@if [ -z "$(PROJECT_PATH)" ]; then \
|
|
echo "PROJECT_PATH is required. Example: make deploy PROJECT_PATH=/path/to/agents-sdk-app"; \
|
|
exit 2; \
|
|
fi
|
|
$(PYTHON) scripts/local_deploy.py $(PROJECT_PATH) --manager-port $(PORT) $(if $(APP_PORT),--app-port $(APP_PORT),) $(if $(NAME),--name "$(NAME)",) $(if $(SANDBOX_BACKEND),--sandbox-backend $(SANDBOX_BACKEND),) $(if $(TARGET),--target $(TARGET),) $(if $(NO_START),--no-start,)
|
|
|
|
clean:
|
|
rm -rf dist node_modules
|