Add Makefile with common development and deployment commands
Browse files
Makefile
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.PHONY: help install dev test lint format run run-ui docker-build docker-up docker-down clean
|
| 2 |
+
|
| 3 |
+
# Default target
|
| 4 |
+
help:
|
| 5 |
+
@echo "Cascade - Intelligent LLM Router"
|
| 6 |
+
@echo ""
|
| 7 |
+
@echo "Usage: make [target]"
|
| 8 |
+
@echo ""
|
| 9 |
+
@echo "Development:"
|
| 10 |
+
@echo " install Install dependencies with Poetry"
|
| 11 |
+
@echo " dev Install with dev dependencies"
|
| 12 |
+
@echo " test Run tests with pytest"
|
| 13 |
+
@echo " lint Run linting (ruff + black check)"
|
| 14 |
+
@echo " format Format code with black"
|
| 15 |
+
@echo ""
|
| 16 |
+
@echo "Running:"
|
| 17 |
+
@echo " run Start the API server"
|
| 18 |
+
@echo " run-ui Start the Streamlit UI"
|
| 19 |
+
@echo ""
|
| 20 |
+
@echo "Docker:"
|
| 21 |
+
@echo " docker-build Build Docker image"
|
| 22 |
+
@echo " docker-up Start all services with docker-compose"
|
| 23 |
+
@echo " docker-down Stop all services"
|
| 24 |
+
@echo ""
|
| 25 |
+
@echo "Deployment:"
|
| 26 |
+
@echo " deploy-railway Deploy to Railway"
|
| 27 |
+
@echo " deploy-fly Deploy to Fly.io"
|
| 28 |
+
@echo ""
|
| 29 |
+
@echo "Other:"
|
| 30 |
+
@echo " clean Clean up build artifacts"
|
| 31 |
+
|
| 32 |
+
# Development
|
| 33 |
+
install:
|
| 34 |
+
poetry install --no-dev
|
| 35 |
+
|
| 36 |
+
dev:
|
| 37 |
+
poetry install
|
| 38 |
+
|
| 39 |
+
test:
|
| 40 |
+
PYTHONPATH=src poetry run pytest tests/ -v --cov=src/cascade
|
| 41 |
+
|
| 42 |
+
lint:
|
| 43 |
+
poetry run ruff check src/
|
| 44 |
+
poetry run black --check src/
|
| 45 |
+
|
| 46 |
+
format:
|
| 47 |
+
poetry run black src/
|
| 48 |
+
poetry run ruff check --fix src/
|
| 49 |
+
|
| 50 |
+
# Running locally
|
| 51 |
+
run:
|
| 52 |
+
PYTHONPATH=src poetry run uvicorn cascade.api.main:app --reload --host 0.0.0.0 --port 8000
|
| 53 |
+
|
| 54 |
+
run-ui:
|
| 55 |
+
PYTHONPATH=src poetry run streamlit run src/cascade/ui/app.py --server.port 8501
|
| 56 |
+
|
| 57 |
+
# Docker
|
| 58 |
+
docker-build:
|
| 59 |
+
docker build -t cascade:latest .
|
| 60 |
+
|
| 61 |
+
docker-up:
|
| 62 |
+
docker-compose up -d
|
| 63 |
+
|
| 64 |
+
docker-down:
|
| 65 |
+
docker-compose down
|
| 66 |
+
|
| 67 |
+
docker-logs:
|
| 68 |
+
docker-compose logs -f
|
| 69 |
+
|
| 70 |
+
# Deployment
|
| 71 |
+
deploy-railway:
|
| 72 |
+
@echo "Deploying to Railway..."
|
| 73 |
+
@echo "1. Install Railway CLI: npm install -g @railway/cli"
|
| 74 |
+
@echo "2. Login: railway login"
|
| 75 |
+
@echo "3. Initialize: railway init"
|
| 76 |
+
@echo "4. Deploy: railway up"
|
| 77 |
+
railway up
|
| 78 |
+
|
| 79 |
+
deploy-fly:
|
| 80 |
+
@echo "Deploying to Fly.io..."
|
| 81 |
+
@echo "1. Install Fly CLI: curl -L https://fly.io/install.sh | sh"
|
| 82 |
+
@echo "2. Login: fly auth login"
|
| 83 |
+
@echo "3. Launch: fly launch"
|
| 84 |
+
@echo "4. Deploy: fly deploy"
|
| 85 |
+
fly deploy
|
| 86 |
+
|
| 87 |
+
# ML Training
|
| 88 |
+
train:
|
| 89 |
+
PYTHONPATH=src poetry run python -m ml.training.train --dataset easy2hard --epochs 5
|
| 90 |
+
|
| 91 |
+
export-onnx:
|
| 92 |
+
PYTHONPATH=src poetry run python -m ml.export.convert_to_onnx
|
| 93 |
+
|
| 94 |
+
# Cleanup
|
| 95 |
+
clean:
|
| 96 |
+
rm -rf .pytest_cache
|
| 97 |
+
rm -rf __pycache__
|
| 98 |
+
rm -rf src/**/__pycache__
|
| 99 |
+
rm -rf .coverage
|
| 100 |
+
rm -rf htmlcov
|
| 101 |
+
rm -rf dist
|
| 102 |
+
rm -rf *.egg-info
|
| 103 |
+
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
| 104 |
+
find . -type f -name "*.pyc" -delete 2>/dev/null || true
|