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).
Add the
bot-readthedocsGitHub team withwriteaccess to the repo.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): https://docs.readthedocs.io/en/stable/config-file/v2.html
A few of our repos already use this file:
https://github.com/edx/open-edx-proposals/blob/master/.readthedocs.yaml
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 outputsection to go to your repos ReadTheDocs project page.Go to the
Buildspage 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
Versionspage for your project.Under the
Activate a Versionsection, find the name of your PR branch.Click
Activateon 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.ymlfile.Go back to the
Buildsscreen 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
Versionspage.
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
It tries to do this by linking your GitHub user with your RTD user, we don’t do this because it grants RTD too many permissions on our repos, we just want them to build docs.
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://”
Do the same with the
SecretChoose “Let me select individual events” then choose these events:
Branch or tag creation
Branch or tag deletion
Pull requests
Pushes
Finish with “Add webhook”