Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 26 additions & 1 deletion sgl-router/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ else
endif

.PHONY: help build test clean docs check fmt dev-setup pre-commit setup-sccache sccache-stats sccache-clean sccache-stop \
python-dev python-build python-build-release python-install python-clean python-test python-check
python-dev python-build python-build-release python-install python-clean python-test python-check \
release-notes

help: ## Show this help message
@echo "Model Gateway Development Commands"
Expand Down Expand Up @@ -132,3 +133,27 @@ python-check: ## Check Python package with twine
dev: python-dev ## Quick development setup (build Python bindings in dev mode)

install: python-install ## Build and install everything

# Release management
release-notes: ## Generate release notes for gateway (usage: make release-notes PREV=gateway-v0.2.2 CURR=gateway-v1.0.0)
@if [ -z "$(PREV)" ] || [ -z "$(CURR)" ]; then \
echo "Usage: make release-notes PREV=<previous-tag> CURR=<current-tag>"; \
echo "Example: make release-notes PREV=gateway-v0.2.2 CURR=gateway-v1.0.0"; \
echo ""; \
echo "Options:"; \
echo " OUTPUT=<file> Save to file (default: stdout)"; \
echo " CREATE_RELEASE=1 Create GitHub draft release via gh CLI (default: draft)"; \
echo " DRAFT=0 Publish release immediately (skip draft)"; \
exit 1; \
fi
@ARGS="$(PREV) $(CURR)"; \
if [ -n "$(OUTPUT)" ]; then \
ARGS="$$ARGS --output $(OUTPUT)"; \
fi; \
if [ "$(CREATE_RELEASE)" = "1" ]; then \
ARGS="$$ARGS --create-release"; \
if [ "$(DRAFT)" = "0" ]; then \
ARGS="$$ARGS --no-draft"; \
fi; \
fi; \
./scripts/generate_gateway_release_notes.sh $$ARGS
55 changes: 55 additions & 0 deletions sgl-router/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -587,4 +587,59 @@ For production builds, use `maturin build --release --out dist` from the `bindin

---

## Release Management

### Creating Gateway Releases

Create releases for the Gateway/Router component with filtered commits:

```bash
# Using make
make release-notes PREV=gateway-v0.2.2 CURR=gateway-v1.0.0

# Save to file
make release-notes PREV=gateway-v0.2.2 CURR=gateway-v1.0.0 OUTPUT=RELEASE_NOTES.md

# Create draft release (requires gh CLI, DEFAULT behavior)
make release-notes PREV=gateway-v0.2.2 CURR=gateway-v1.0.0 CREATE_RELEASE=1

# Publish release immediately (requires gh CLI)
make release-notes PREV=gateway-v0.2.2 CURR=gateway-v1.0.0 CREATE_RELEASE=1 DRAFT=0
```

**Tag Naming**: Use `gateway-*` or `router-*` prefixes to avoid triggering unrelated CI workflows.

### Release Workflow

1. **Create and push tag**:
```bash
git tag -a gateway-v1.0.0 <commit-hash> -m "Gateway release v1.0.0"
git push origin gateway-v1.0.0
```

2. **Generate release notes** (automatically filters gateway-related commits):
```bash
make release-notes PREV=gateway-v0.2.2 CURR=gateway-v1.0.0
```

3. **Create GitHub release**:
```bash
# Create draft (DEFAULT - review before publishing)
make release-notes PREV=gateway-v0.2.2 CURR=gateway-v1.0.0 CREATE_RELEASE=1

# Or publish immediately (skip draft)
make release-notes PREV=gateway-v0.2.2 CURR=gateway-v1.0.0 CREATE_RELEASE=1 DRAFT=0
```

### Filtered Paths

Release notes only include commits touching:
- `sgl-router/` - Router codebase
- `python/sglang/srt/grpc/` - gRPC protocol
- `python/sglang/srt/entrypoints/grpc_server.py` - gRPC server

The script automatically extracts author attribution, PR links, and identifies new contributors.

---

SGLang Model Gateway continues to evolve alongside the core SGLang runtime. Contributions should keep CLI flags, documentation, and Python bindings in sync with the Rust implementation.
Loading
Loading