Deployment

GitHub Pages

# .github/workflows/docs.yml
name: Deploy docs
on:
  push:
    branches: [main]
permissions:
  pages: write
  id-token: write
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install sphinx
      - run: pip install -e .
      - run: sphinx-build -b html docs/ _build/html
      - uses: actions/upload-pages-artifact@v3
        with:
          path: _build/html
  deploy:
    needs: build
    runs-on: ubuntu-latest
    environment:
      name: github-pages
    steps:
      - uses: actions/deploy-pages@v4

GitLab Pages

pages:
  image: python:3.12
  script:
    - pip install sphinx
    - pip install -e .
    - sphinx-build -b html docs/ public/
  artifacts:
    paths:
      - public/

Read the Docs

Add the theme as a dependency in docs/requirements.txt:

sphinx>=7.0
manticore-sphinx-theme @ git+https://github.com/yourorg/manticore-sphinx-theme.git

Self-Hosted (Nginx)

python build.py docs-prod
rsync -avz --delete _build/html/ webserver:/var/www/docs/

Enable gzip pre-compression in Nginx:

gzip_static on;

S3 / CloudFront

python build.py docs-prod
aws s3 sync _build/html/ s3://my-docs-bucket/ --delete
aws cloudfront create-invalidation --distribution-id XXXXX --paths "/*"