Skip to content

Documentation

Documentation #13

Workflow file for this run

name: Documentation
on:
push:
branches:
- main
pull_request:
branches: [ main ]
paths:
- 'src/**/*.py'
- 'docs/**'
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
pull-requests: write
# Allow only one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
check-docs:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
# Make this job informational only - don't block PR
continue-on-error: true
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python3 -
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Install dependencies
run: |
poetry install --with docs
- name: Check documentation sync
run: |
cd ${{ github.workspace }}
# Generate the documentation
poetry run python docs/generate_docs.py
# Check if any files were modified (docs are out of sync)
if [ -n "$(git status --porcelain docs/source/)" ]; then
echo "::warning::Documentation is out of sync with the codebase!"
echo "::warning::Please run 'python docs/generate_docs.py' and commit the updated documentation files."
exit 1
fi
echo "Documentation is in sync with the codebase."
- name: Notify about out-of-sync docs
if: failure()
uses: actions/github-script@v6
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '⚠️ **Documentation is out of sync with the code!**\n\nPlease run `python docs/generate_docs.py` and commit the updated documentation files.'
})
build:
runs-on: ubuntu-latest
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'pull_request'
needs: [check-docs]
# Make this job informational only for PRs - don't block PR
continue-on-error: ${{ github.event_name == 'pull_request' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python3 -
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Install dependencies
run: |
poetry install --with docs
- name: Generate RST files
run: |
cd ${{ github.workspace }}
poetry run python docs/generate_docs.py
- name: Build documentation
run: |
cd ${{ github.workspace }}/docs
poetry run sphinx-build -b html source build/html
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ${{ github.workspace }}/docs/build/html
deploy:
# Only deploy on push to main or workflow_dispatch, skip on PRs
if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch'
needs: build
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4