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
41 changes: 34 additions & 7 deletions .github/workflows/check-docs.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
name: Compile js-doc and build mdBook
name: Check docs
# Builds all documentation sources: js-doc, mdBook, and Sphinx.

on:
push:
Expand All @@ -8,24 +9,50 @@ on:
branches:
- '**'
jobs:
build-and-deploy:
check-docs:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0

# --- js-doc ---

- name: Set up Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install dependencies

- name: Install npm dependencies
run: npm install --dev
- name: Generate documentation

- name: Build js-doc
run: npm run js-doc
- name: Setup mdBook

# --- mdBook ---

- name: Set up mdBook
uses: peaceiris/actions-mdbook@v2
with:
mdbook-version: 'latest'
- run: mdbook build

- name: Build mdBook
run: mdbook build
working-directory: ./docs

# --- Sphinx ---

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Set up Sphinx environment
run: make -C docs setupenv

- name: Build Sphinx docs
run: make -C docs test
35 changes: 0 additions & 35 deletions .github/workflows/docs-deploy.yml

This file was deleted.

79 changes: 79 additions & 0 deletions .github/workflows/docs-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: "Docs / Publish"
# For more information,
# see https://sphinx-theme.scylladb.com/stable/deployment/production.html#available-workflows

on:
push:
branches:
- main
- 'branch-**'
paths:
- "docs/**"
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.repository.default_branch }}
persist-credentials: false
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Set up env
run: make -C docs setupenv

- name: Build docs
run: make -C docs multiversion

- name: Build redirects
run: make -C docs redirects

- name: Tar folder
run: |
tar \
--dereference --hard-dereference \
--directory docs/_build/dirhtml/ \
-cvf ${{ runner.temp }}/artifact.tar \
.

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: github-pages
path: ${{ runner.temp }}/artifact.tar
retention-days: "1"

release:
# Add a dependency to the build job
needs: build

# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
contents: read # to read private repo

# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

# Specify runner + deployment step
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -235,3 +235,7 @@ Cargo.lock
__pycache__/
*.pyc
*.pyo

#docs
docs/_build
docs/source/api/
108 changes: 108 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Global variables
# You can set these variables from the command line.
POETRY = poetry
SPHINXOPTS = -j auto
SPHINXBUILD = $(POETRY) run sphinx-build
PAPER =
BUILDDIR = _build
SOURCEDIR = source

# Internal variables
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCEDIR)
TESTSPHINXOPTS = $(ALLSPHINXOPTS) -W --keep-going

.PHONY: all
all: dirhtml

# Setup commands
.PHONY: setupenv
setupenv:
pip install -q poetry
Comment on lines +19 to +22
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔧 Please use uv, just as @Lorak-mmk did in Rust Driver: scylladb/scylla-rust-driver#1528

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It has broader implications since we have this toolchain installed across 15+ docs projects and we have to maintain it. If it makes sense, we'll do it as a follow-up PR and help all projects migrate to uv at once.

We're now upgrading the theme to support Python 3.14 & Sphinx 9. Might be the right time to make the switch (main benefit is uv is 10–100x faster than poetry for dependency resolution and installs). @annastuchlik, thoughts?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Imo main benefit is that uv works, and is not a pain to work with, as compared to any other Python package / project manager.
Some projects already migrated:


.PHONY: setup
setup:
$(POETRY) install
cd .. && npm install

.PHONY: update
update:
$(POETRY) update

# Clean commands
.PHONY: pristine
pristine: clean
git clean -dfX

.PHONY: clean
clean:
rm -rf $(BUILDDIR)/*
rm -rf $(SOURCEDIR)/api

# Generate output commands
.PHONY: jsdoc
jsdoc:
cd .. && npm run js-doc
@echo
@echo "JSDoc build finished. The API docs are in ../public/docs/."

.PHONY: api-pages
api-pages: jsdoc
$(POETRY) run python _utils/generate_api_pages.py

.PHONY: dirhtml
dirhtml: setup api-pages
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."

.PHONY: singlehtml
singlehtml: setup
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."

.PHONY: epub
epub: setup
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."

.PHONY: epub3
epub3: setup
$(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
@echo
@echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."

.PHONY: multiversion
multiversion: setup
$(POETRY) run ./_utils/multiversion.sh
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."

.PHONY: redirects
redirects: setup
$(POETRY) run redirects-cli fromfile --yaml-file _utils/redirects.yaml --output-dir $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."

# Preview commands
.PHONY: preview
preview: setup api-pages
$(POETRY) run sphinx-autobuild -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml --port 5500

.PHONY: multiversionpreview
multiversionpreview: multiversion
$(POETRY) run python -m http.server 5500 --directory $(BUILDDIR)/dirhtml

# Test commands
.PHONY: test
test: setup api-pages
$(SPHINXBUILD) -b dirhtml $(TESTSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."

.PHONY: linkcheck
linkcheck: setup
$(SPHINXBUILD) -b linkcheck $(SOURCEDIR) $(BUILDDIR)/linkcheck
Loading