[v1.x] ci: deploy docs to py.sdk.modelcontextprotocol.io via Pages artifact (#2635)
This commit is contained in:
parent
77431ebe7d
commit
9773a3f75e
8 changed files with 117 additions and 63 deletions
57
.github/workflows/deploy-docs.yml
vendored
Normal file
57
.github/workflows/deploy-docs.yml
vendored
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
name: Deploy Docs
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- v1.x
|
||||||
|
paths:
|
||||||
|
- docs/**
|
||||||
|
- mkdocs.yml
|
||||||
|
- src/mcp/**
|
||||||
|
- scripts/build-docs.sh
|
||||||
|
- pyproject.toml
|
||||||
|
- uv.lock
|
||||||
|
- .github/workflows/deploy-docs.yml
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: deploy-docs
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy-docs:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||||
|
|
||||||
|
- name: Install uv
|
||||||
|
uses: astral-sh/setup-uv@803947b9bd8e9f986429fa0c5a41c367cd732b41 # v7.2.1
|
||||||
|
with:
|
||||||
|
enable-cache: true
|
||||||
|
version: 0.9.5
|
||||||
|
|
||||||
|
- name: Build combined docs (v1.x at /, main at /v2/)
|
||||||
|
run: bash scripts/build-docs.sh site
|
||||||
|
|
||||||
|
- name: Configure Pages
|
||||||
|
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
|
||||||
|
|
||||||
|
- name: Upload Pages artifact
|
||||||
|
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
|
||||||
|
with:
|
||||||
|
path: site
|
||||||
|
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
|
||||||
33
.github/workflows/publish-docs-manually.yml
vendored
33
.github/workflows/publish-docs-manually.yml
vendored
|
|
@ -1,33 +0,0 @@
|
||||||
name: Publish Docs manually
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
docs-publish:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Configure Git Credentials
|
|
||||||
run: |
|
|
||||||
git config user.name github-actions[bot]
|
|
||||||
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
||||||
|
|
||||||
- name: Install uv
|
|
||||||
uses: astral-sh/setup-uv@v3
|
|
||||||
with:
|
|
||||||
enable-cache: true
|
|
||||||
version: 0.9.5
|
|
||||||
|
|
||||||
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
|
||||||
- uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
key: mkdocs-material-${{ env.cache_id }}
|
|
||||||
path: .cache
|
|
||||||
restore-keys: |
|
|
||||||
mkdocs-material-
|
|
||||||
|
|
||||||
- run: uv sync --frozen --group docs
|
|
||||||
- run: uv run --frozen --no-sync mkdocs gh-deploy --force
|
|
||||||
29
.github/workflows/publish-pypi.yml
vendored
29
.github/workflows/publish-pypi.yml
vendored
|
|
@ -51,32 +51,3 @@ jobs:
|
||||||
|
|
||||||
- name: Publish package distributions to PyPI
|
- name: Publish package distributions to PyPI
|
||||||
uses: pypa/gh-action-pypi-publish@release/v1
|
uses: pypa/gh-action-pypi-publish@release/v1
|
||||||
|
|
||||||
docs-publish:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: ["pypi-publish"]
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Configure Git Credentials
|
|
||||||
run: |
|
|
||||||
git config user.name github-actions[bot]
|
|
||||||
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
||||||
|
|
||||||
- name: Install uv
|
|
||||||
uses: astral-sh/setup-uv@v3
|
|
||||||
with:
|
|
||||||
enable-cache: true
|
|
||||||
version: 0.9.5
|
|
||||||
|
|
||||||
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
|
||||||
- uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
key: mkdocs-material-${{ env.cache_id }}
|
|
||||||
path: .cache
|
|
||||||
restore-keys: |
|
|
||||||
mkdocs-material-
|
|
||||||
|
|
||||||
- run: uv sync --frozen --group docs
|
|
||||||
- run: uv run --frozen --no-sync mkdocs gh-deploy --force
|
|
||||||
|
|
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -143,6 +143,7 @@ venv.bak/
|
||||||
|
|
||||||
# mkdocs documentation
|
# mkdocs documentation
|
||||||
/site
|
/site
|
||||||
|
/.worktrees/
|
||||||
|
|
||||||
# mypy
|
# mypy
|
||||||
.mypy_cache/
|
.mypy_cache/
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
# MCP Python SDK
|
# MCP Python SDK
|
||||||
|
|
||||||
|
!!! tip "Looking for the upcoming v2?"
|
||||||
|
See the [v2 development documentation](https://py.sdk.modelcontextprotocol.io/v2/).
|
||||||
|
|
||||||
The **Model Context Protocol (MCP)** allows applications to provide context for LLMs in a standardized way, separating the concerns of providing context from the actual LLM interaction.
|
The **Model Context Protocol (MCP)** allows applications to provide context for LLMs in a standardized way, separating the concerns of providing context from the actual LLM interaction.
|
||||||
|
|
||||||
This Python SDK implements the full MCP specification, making it easy to:
|
This Python SDK implements the full MCP specification, making it easy to:
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ strict: true
|
||||||
repo_name: modelcontextprotocol/python-sdk
|
repo_name: modelcontextprotocol/python-sdk
|
||||||
repo_url: https://github.com/modelcontextprotocol/python-sdk
|
repo_url: https://github.com/modelcontextprotocol/python-sdk
|
||||||
edit_uri: edit/v1.x/docs/
|
edit_uri: edit/v1.x/docs/
|
||||||
site_url: https://modelcontextprotocol.github.io/python-sdk
|
site_url: https://py.sdk.modelcontextprotocol.io/
|
||||||
|
|
||||||
# TODO(Marcelo): Add Anthropic copyright?
|
# TODO(Marcelo): Add Anthropic copyright?
|
||||||
# copyright: © Model Context Protocol 2025 to present
|
# copyright: © Model Context Protocol 2025 to present
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@ bump = true
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
Homepage = "https://modelcontextprotocol.io"
|
Homepage = "https://modelcontextprotocol.io"
|
||||||
|
Documentation = "https://py.sdk.modelcontextprotocol.io/"
|
||||||
Repository = "https://github.com/modelcontextprotocol/python-sdk"
|
Repository = "https://github.com/modelcontextprotocol/python-sdk"
|
||||||
Issues = "https://github.com/modelcontextprotocol/python-sdk/issues"
|
Issues = "https://github.com/modelcontextprotocol/python-sdk/issues"
|
||||||
|
|
||||||
|
|
|
||||||
54
scripts/build-docs.sh
Executable file
54
scripts/build-docs.sh
Executable file
|
|
@ -0,0 +1,54 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Build combined v1 + v2 MkDocs documentation for GitHub Pages.
|
||||||
|
#
|
||||||
|
# v1 docs (from the v1.x branch) are placed at the site root.
|
||||||
|
# v2 docs (from main) are placed under /v2/.
|
||||||
|
#
|
||||||
|
# Both branches are fetched fresh from origin, so the output is identical
|
||||||
|
# regardless of which branch triggered the workflow. This script is intended
|
||||||
|
# to run in CI; for local single-branch preview use `uv run mkdocs serve`.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# scripts/build-docs.sh [output-dir]
|
||||||
|
#
|
||||||
|
# Default output directory: site
|
||||||
|
#
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||||
|
OUTPUT_DIR="$(cd "$REPO_ROOT" && mkdir -p "${1:-site}" && cd "${1:-site}" && pwd)"
|
||||||
|
V1_WORKTREE="$REPO_ROOT/.worktrees/v1-docs"
|
||||||
|
V2_WORKTREE="$REPO_ROOT/.worktrees/v2-docs"
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
cd "$REPO_ROOT"
|
||||||
|
git worktree remove --force "$V1_WORKTREE" 2>/dev/null || true
|
||||||
|
git worktree remove --force "$V2_WORKTREE" 2>/dev/null || true
|
||||||
|
rmdir "$REPO_ROOT/.worktrees" 2>/dev/null || true
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
rm -rf "${OUTPUT_DIR:?}"/*
|
||||||
|
|
||||||
|
build_branch() {
|
||||||
|
local branch="$1" worktree="$2" dest="$3"
|
||||||
|
|
||||||
|
echo "=== Building docs for ${branch} ==="
|
||||||
|
git fetch origin "$branch"
|
||||||
|
git worktree remove --force "$worktree" 2>/dev/null || true
|
||||||
|
rm -rf "$worktree"
|
||||||
|
git worktree add --detach "$worktree" "origin/${branch}"
|
||||||
|
|
||||||
|
(
|
||||||
|
cd "$worktree"
|
||||||
|
uv sync --frozen --group docs
|
||||||
|
uv run --frozen --no-sync mkdocs build --site-dir "$dest"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
build_branch v1.x "$V1_WORKTREE" "$OUTPUT_DIR"
|
||||||
|
build_branch main "$V2_WORKTREE" "$OUTPUT_DIR/v2"
|
||||||
|
|
||||||
|
echo "=== Combined docs built at $OUTPUT_DIR ==="
|
||||||
Loading…
Reference in a new issue