--- name: release description: Used to release all toolbox, integrations, agents. Use when releasing a subproject to PyPI, Docker Hub, or when the user asks to release or publish. --- # Release Workflows All release workflows are triggered via **`workflow_dispatch`** (manual) from the GitHub Actions tab. Bump the version in the subproject's `pyproject.toml` before dispatching. ## Workflow files | Workflow file | Package | What it does | Secrets used | | --------------------------------- | ------------------ | ------------------------------------ | ----------------------------------------------------- | | `release-mcp-memgraph.yaml` | mcp-memgraph | Build & publish to PyPI + Docker Hub | `PYPI_TOKEN`, `DOCKERHUB_USERNAME`, `DOCKERHUB_TOKEN` | | `release-toolbox.yaml` | memgraph-toolbox | Build & publish to PyPI | `PYPI_TOKEN` | | `release-langchain-memgraph.yaml` | langchain-memgraph | Build & publish to PyPI | `PYPI_TOKEN` | | `release-lightrag-memgraph.yaml` | lightrag-memgraph | Build & publish to PyPI | `PYPI_TOKEN` | | `release-unstructured2graph.yaml` | unstructured2graph | Build & publish to PyPI | `PYPI_TOKEN` | | `release-hygm.yaml` | hygm | Build & publish to PyPI | `PYPI_TOKEN` | | `release-agent-context-graph.yaml` | agent-context-graph | Build & publish to PyPI | `PYPI_TOKEN` | | `release-actions-graph.yaml` | actions-graph | Build & publish to PyPI | `PYPI_TOKEN` | | `release-skills-graph.yaml` | skills-graph | Build & publish to PyPI | `PYPI_TOKEN` | | `release-sessions-graph.yaml` | sessions-graph | Build & publish to PyPI | `PYPI_TOKEN` | ## Subproject paths | Package | Path | pyproject.toml version field | | ------------------ | --------------------------------- | ---------------------------- | | memgraph-toolbox | `memgraph-toolbox` | `[project] version` | | mcp-memgraph | `integrations/mcp-memgraph` | `[project] version` | | langchain-memgraph | `integrations/langchain-memgraph` | `[project] version` | | lightrag-memgraph | `integrations/lightrag-memgraph` | `[project] version` | | unstructured2graph | `unstructured2graph` | `[project] version` | | hygm | `hygm` | `[project] version` | | agent-context-graph | `context-graph/agent-context-graph` | `[project] version` | | actions-graph | `context-graph/actions-graph` | `[project] version` | | skills-graph | `context-graph/skills-graph` | `[project] version` | | sessions-graph | `context-graph/sessions-graph` | `[project] version` | ## Required GitHub secrets | Secret | Used by | Description | | -------------------- | ---------------------- | ------------------------------- | | `PYPI_TOKEN` | All release workflows | PyPI API token for `uv publish` | | `DOCKERHUB_USERNAME` | `release-mcp-memgraph` | Docker Hub username | | `DOCKERHUB_TOKEN` | `release-mcp-memgraph` | Docker Hub access token | ## Notes - **Publish dependencies first.** PyPI resolves the published floor of every dependency, so release in dependency order: `memgraph-toolbox` → `hygm` → `unstructured2graph`; `agent-context-graph` → `actions-graph` / `skills-graph` → `sessions-graph`. - **Context Graph plugins** install from PyPI in `context-graph/plugins/*/scripts/bootstrap.sh`. When a release is one the plugins need, raise the floors there and bump both plugin manifests (`.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`) plus the root `.claude-plugin/marketplace.json` entry, and merge that only once the packages are on PyPI: the plugins install from `main`. - **lightrag-memgraph**, **unstructured2graph** and **hygm** use `uv build --out-dir dist` to work around a uv artifact path issue. - The **mcp-memgraph** Docker image is built from the repo root (the Dockerfile copies both `memgraph-toolbox/` and `integrations/mcp-memgraph/`). - The mcp-memgraph workflow tags the Docker image with both the version and `latest`.