Debugging/Fixing Docs and Adding Docs CI
Documentation projects on ReadTheDocs can be broken. This page is about how to fix them.
Getting the login for ReadTheDocs
Ask Feanil to share the Keeper folder for the readthedocs.org login for the “openedx-rtd-maintainer” account.
Go to the build Output
The failing build in RTD (ReadTheDocs) will have a stack trace that you can use to start debugging the build.
Login Using the credentials from Keeper
Find your failing project in the project list.
Click on the project to go to a project page like: https://readthedocs.org/projects/opaque-keys/
Go to the Builds Section.
Click on a failing build to see the build output.
You should see the build output.
Fix any issues you see.(See the Common Problems section below for help.)
Build docs Feedback Loops
Notify on Failures
Many doc projects don’t notify on failure. If you know how the owning team wants to be notified for failures, add the relevant e-mail address as a notification channel under ‘Admin’->'Notifications'
Build docs for pull requests
The best feedback is to use ReadTheDocs to build the docs for each pull request, with the result added as a check to the pull request.
Create a .readthedocs.yml file (see below).
Add a readthedocs webhook to the repo, and make sure it has the Pull requests events enabled in addition to the usual events (see below).
Enable Build pull requests for this project in the readthedocs settings.
Add doc builds to CI
Another approach is to build the docs as part of the GitHub Action CI. If you are using ReadTheDocs check, this isn’t needed.
Docs can often be built locally by going to the docs
directory in the repo and running make html
. Add this as a test to CI if the repo doesn’t already build docs as a part of CI.
Example PR of doing this in opaque-keys
Use .readthedocs.yml
To fix most problems, you’ll probably need to update the settings. The best advice is to configure ReadTheDocs with a .readthedocs.yml file in your repo. ReadTheDocs has docs about how to use it (natch): Configuration file reference
A few of our repos already use this file:
open-edx-proposals/.readthedocs.yaml at master · openedx/open-edx-proposals
https://github.com/edx/devstack/blob/master/.readthedocs.yml
Add a new .readthedocs.yml
If the repo is missing a .readthedocs.yml
you’ll want to make a new one. Use this example as a starting point:
RTD also has a doc on how to migrate to the config file from the web interface.
Testing .readthedocs.yml Changes
Push your changes up to GitHub on your PR branch.
Follow the directions from the
Go to the build output
section to go to your repos ReadTheDocs project page.Go to the
Builds
page for your project and build the latest version of the docs. (This will pull all the latest code including any new branches).Go to the
Versions
page for your project.Under the
Activate a Version
section, find the name of your PR branch.Click
Activate
on your PR branch.Set your branch to be active (it will be built) and hidden (it won’t be listed in the versions list) and then save the changes.
Now you should be able to run builds of your branch to test any changes you’re making to the
.readthedocs.yml
file.Go back to the
Builds
screen and build your branch as many times as you need while you iterate on changes.When you’re done testing, de-activate your branch on the
Versions
page.
Common Documentation Building Problems
Wrong Python Version on RTD
If RTD is trying to build the docs using an older version of Python (2.x) you can update that version.
If your repo has a .readthedocs.yml
, update the Python version in that file and push up a new PR.
If it is still configured via the web interface, consider moving your settings to .readthedocs.yml
as a part of the fix. You can also update the setting in the web interface by going to ‘Admin’->'Advanced Settings' and try to re-build the project.
Missing Requirements Files
If you see a ‘No such file or directory’ message on the requirements file, the issue might be with the config in your repo.
If your repo has a .readthedocs.yml
, ensure that the correct path to the requirements file is in there.
If it is still configured via the web interface, consider moving your settings to .readthedocs.yml as a part of the fix. You can also update the setting in the web interface by going to ‘Admin’->'Advanced Settings' to put in the correct path to the requirements file needed to build the docs.
Missing webhook
The docs might build fine when triggered manually, but not start builds automatically. This means you need to add or fix the webhook:
Visit the Admin - Integrations section of the project dashboard
You need a “GitHub incoming webhook.” If it’s not there, click “Add integration.”
Select “GitHub incoming webhook” from the Integration type dropdown.
ReadTheDocs will try to add the webhook to GitHub, but will likely fail (TODO: why?)
Copy the URL that starts “readthedocs.org/api/v2/…”
In GitHub, go to the repo Settings - Webhooks. Click “Add webhook”
Paste the URL you copied into the Payload URL. Make sure it starts with “https://”
Choose “Let me select individual events” then choose these events:
Branch or tag creation
Branch or tag deletion
Pull requests
Pushes
Finish with “Add webhook”