Skip to main content

Documentation Versioning

Managing documentation versions across releases using mike


Overview​

NeuroLink documentation uses mike to maintain multiple versions of documentation for different releases. This allows users to view documentation for the specific version they're using.

Benefits​

  • Version-specific docs: Users can view docs matching their installed version
  • Preserved history: Old versions remain accessible
  • Easy switching: Version selector in navigation
  • Automated deployment: Integrate with CI/CD for automatic publishing

Setup​

1. Install Dependencies​

# Install mike (already in requirements.txt)
pip install -r requirements.txt

2. Verify Configuration​

The mkdocs.yml already includes mike configuration:

extra:
version:
provider: mike
default: latest

Local Usage​

Create First Version​

# Deploy current docs as version 1.0
mike deploy 1.0 latest --update-aliases

# Set 1.0 as the default version
mike set-default latest

Deploy New Version​

# Deploy new version 1.1
mike deploy 1.1 latest --update-aliases

# Deploy specific version without making it latest
mike deploy 1.0.5

List All Versions​

mike list

Output:

1.0 [latest]
1.1
1.2

Serve Versioned Docs Locally​

mike serve

Visit http://localhost:8000 to test version switching.

Delete a Version​

mike delete 1.0

Version Management Workflow​

For Minor Releases (1.0 → 1.1)​

# 1. Update docs for new features
# 2. Deploy new version
mike deploy 1.1 latest --update-aliases --push

# 3. Verify
mike list

For Major Releases (1.x → 2.0)​

# 1. Create new version
mike deploy 2.0 latest --update-aliases --push

# 2. Keep 1.x docs accessible
mike list
# Output:
# 1.9
# 2.0 [latest]

For Patch Releases (1.0.0 → 1.0.1)​

# Update existing version (same alias)
mike deploy 1.0 latest --update-aliases --push

CI/CD Integration​

GitHub Actions Workflow​

Create .github/workflows/docs.yml:

name: Documentation

on:
push:
branches:
- release
tags:
- "v*"

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for mike

- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.x"

- name: Install dependencies
run: |
pip install -r docs/improve-docs/requirements.txt

- name: Configure Git
run: |
git config user.name github-actions
git config user.email [email protected]

- name: Deploy documentation
run: |
VERSION=${GITHUB_REF#refs/tags/v}
cd docs/improve-docs
mike deploy $VERSION latest --update-aliases --push

Automatic Version Detection​

- name: Deploy documentation
run: |
# Get version from package.json
VERSION=$(node -p "require('./package.json').version")
cd docs/improve-docs

# Deploy with version
if [[ $VERSION == *"-"* ]]; then
# Pre-release (1.0.0-beta.1)
mike deploy $VERSION --push
else
# Stable release
mike deploy $VERSION latest --update-aliases --push
fi

Best Practices​

1. Version Naming​

  • Stable releases: 1.0, 1.1, 2.0 (match npm version)
  • Pre-releases: 1.0-beta, 2.0-rc1
  • Development: dev (always latest from main branch)

2. Alias Strategy​

# Latest stable release
mike deploy 1.5 latest stable --update-aliases

# Development version
mike deploy dev --update-aliases

# Long-term support
mike deploy 1.0 lts --update-aliases

3. Version Cleanup​

# Remove old versions (keep last 3 major versions)
mike delete 0.9
mike delete 1.0

4. Documentation Updates​

For bug fixes to old versions:

# Checkout old version
git checkout v1.0.0

# Make documentation fixes
# ...

# Redeploy specific version
mike deploy 1.0 --push

Advanced Configuration​

Custom Version Selector​

Add to mkdocs.yml:

extra:
version:
provider: mike
default: latest
alias: true

Version Warnings​

Add version-specific warnings in docs/index.md:

:::warning[Deprecated Version]
You're viewing documentation for version 1.0, which is no longer supported.
Please upgrade to the latest version.

:::


Troubleshooting​

Issue: "gh-pages branch not found"​

# Create gh-pages branch
git checkout --orphan gh-pages
git rm -rf .
git commit --allow-empty -m "Initialize gh-pages"
git push origin gh-pages
git checkout main

Issue: Version selector not appearing​

Verify mike is installed:

mike --version

Check mkdocs.yml configuration:

extra:
version:
provider: mike # Must be set

Issue: Wrong default version​

# Set correct default
mike set-default latest
mike serve # Verify locally

Version History​

VersionRelease DateStatusNotes
7.47.xCurrent✅ ActiveLatest features
7.46.x2024-12✅ ActivePrevious stable
7.45.x2024-11⚠️ OldSecurity updates only
< 7.452024 and earlier❌ UnsupportedUpgrade recommended


Additional Resources​