5.1. GitHub Pages¶
GitHub Pages offers a really easy way to deploy your documentation.
To use this functionality, go on the GitHub of your forked repository, then go to Settings > Pages > Build and deployment > Source, and select GitHub Actions.
We won’t go into the details, but a GitHub Action is a
task that is triggered every time a certain event occurs. The task and the triggering event are defined
in a workflow, that you put in the .github/workflows folder of your repository.
Here our task is “building and deploying the documentation”, and our event is “every time I push on
the main branch”.
Well, here is the workflow associated to this action:
name: documentation
on:
push:
branches: ["main"]
permissions:
contents: read
pages: write
id-token: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: snok/install-poetry@v1
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install package
run: poetry install
- name: Sphinx build
run: poetry run sphinx-build -M html docs docs/_build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/_build/html
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Important
It is important to tell GitHub to only trigger the workflow when we push on
our main branch. Otherwise, if we work on other branches, for example to develop
a new feature, the public documentation will change every time we push something on
these branches. So, with GitHub Pages, make sure your public documentation relies on the most stable
branch.
In your forked repository, you already have this workflow in .github/workflows/build_and_deploy.yml of your main
branch, so no need to add it.
Nevertheless, workflows may not be activated in a forked repository. To activate them, in your forked GitHub repo, go to Actions. If you have the message “Workflows aren’t being run on this forked repository”, click on I understand my workflows, go ahead and enable them.
Lastly, to trigger the deployment, you may need to push something on your main branch. So, just push
an empty commit with git commit --allow-empty -m "Trigger deployment" and git push.
The deployment can take some time, but once it is finished,
your documentation should be available at https://<github-username>.github.io/tuto-doc!
As you just saw, GitHub Pages makes it very easy to publicly deploy your documentation. But there is one main drawback: there can be only one version of your documentation. More precisely:
you can’t have different documentations for different branches;
once you have updated your main branch, you can’t see the old versions of the documentation.
It can be a real handicap if you plan to maintain your package regularly, because the users won’t use necessarily the latest version of your code.
A great alternative that handles versioning is Read the Docs.