Repository navigation
#137/Read the Docs: clean build, docs PR check, per-channel rebuild - #395
Merged
Merged
Conversation
…channel Fix the 31 Sphinx warnings (landing-page include, dead links, headings) and fail RTD builds on warnings. Links out of doc/ become GitHub links at the built commit. docs.yml builds the site on every PR; release.yml's new docs-publish job rebuilds the channel's RTD version after publishing.
… build refs Merge installation/usage/setupGuide into getting-started, turn the changelog stub into a Releases page (channels -> docs versions), include About from the README, and fix stale script names and channel tables in BUILD and the developer guide.
This was referenced Sep 23, 2026
…_readthedocs_publishing # Conflicts: # .github/workflows/release.yml
FIXS_message_flow had six top-level headings, each shown as its own page in the left panel; single_title.py now fails the build on that. The #156 DLL proposal and GUI wireframes stay in the repo but are excluded from the site.
Expand only the page being read, two levels deep. CarlaDynoCoupling and DynoDataChecks describe unbuilt/unrun work and leave the site like the other design docs; links to excluded pages now open them on GitHub.
yunlishao
approved these changes
Sep 23, 2026
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Read the Docs (https://real-sim.readthedocs.io) had not built since 2026-04-10.
mainmoved 609 commits after that with no build, andstablewas still serving v0.7.0 content. The GitHub webhook delivers fine (every delivery answers 200) and a manual build through the RTD API succeeds, so builds work but pushes had stopped producing them.latestandstablewere rebuilt by hand (#34726811, #34726835).This PR makes the docs build clean, fails any PR that breaks them, rebuilds each release channel's docs when the channel is published, and cleans up the user-facing pages that had gone stale.
Versions follow the release channels
mainstable(default)beta_vX.Y.ZvX.Y.Z-betadev_vX.Y.ZvX.Y.Z-alphaThese are the tags
release.ymlalready publishes, so the docs carry the same name as the release zip. The newdocs-publishjob runs afterbuild-publishunder the same condition aslinux-publish. It asks RTD to build the version named after the channel tag, and syncs and retries while RTD catches up with a recreated tag. It fails loudly if RTD won't build that version, and warns and passes when there is noRTD_TOKENsecret.Clean build
The build went from 31 warnings to 0, and
.readthedocs.ymlnow setsfail_on_warning: true.index.rstusedmdinclude, which no installed extension provides, so the README intro was silently dropped. It now includes the README's About section, bounded by comment markers.doc/: these work on GitHub but had no target on RTD.doc/_ext/repo_links.pyrewrites each link whose target exists into a GitHub URL at the built commit (READTHEDOCS_GIT_COMMIT_HASH). Links to missing files still fail the build.%2F-encoded path, two links going up one directory too many, aRoutes.yamllink pointing at nothing, heading levels, trailing---rules, an unknown lexer, and a tab inside a YAML example.releasecomes fromREADTHEDOCS_VERSION_NAMEinstead of the hardcoded0.10.PR check
.github/workflows/docs.ymlbuilds the site with-W --keep-goingon Python 3.11 on every PR intodev,main,dev_v*andbeta_v*. It has no path filter on purpose: docs link into the whole repo.User pages
User Guide menu: now Getting Started, Configuration, FAQ. Installation, Usage and Setup Guide repeated the same path with drifted facts:
TrafficLayerLogs/folder that doesn't existCarMaker/RealSimGeneric.mdlandCM11_proj(moved or gone)Getting Started is now the one path: published build or
dispatch.bat→environment.yml→ SimpleEchoClient → simulator guides.Changelog stub → Releases: channels, which docs version matches each, downloads, and where the release notes live (GitHub Releases).
About: included from the README (contacts, funding, team, presentations), so the README stays the single source.
Stale build references:
4a_/4b_/5_mex→5a_/5b_/6_in BUILD, CarMakerDoc, README and CLAUDE.md.5b_carmaker_dspace.ps1(where the code actually is).compileExternalLibraries.bat,dispatchRealSim.py,RS_CM_BuildConfig_r20xxb.py,buildRS_2024a.bat). Its build section now points to BUILD.md instead of repeating it.main→latest.Left panel
FIXS_message_flow.mdhad six top-level headings, so each section showed up in the left panel as a separate page. It now has one title with##sections.doc/_ext/single_title.pyfails the build on a second top-level heading; tested against the unfixed page, it flagged that page and no other.exclude_patterns.collapse_navigation: True,navigation_depth: 2). Before, every page's sections were expanded, four levels deep.Related Issues
Part of #137 (issue text corrected where it was out of date). Follow-up: Python autodoc with CommonLib docstrings, and tutorials rebuilt on
tests/Python/SimpleEchoClientand verified by running them.Environment
doc/requirements_doc.txt(Sphinx 7.4.7, myst-parser 2.0.0); RTD's own PR preview build also passed withfail_on_warningon.Checklist
Verification
-W --keep-goingexits 0. WithREADTHEDOCS_GIT_COMMIT_HASH=deadbeef, links come out asgithub.com/ORNL-Real-Sim/FIXS/{blob,tree}/deadbeef/.... The landing intro and the About include both render, and the rest of the README does not leak in.[x](../no_such_dir/)fails the-Wbuild with exit 1. An existing../tests/link next to it was rewritten.docs-publishscript, run against the real RTD API:latest→ build triggered, exit 0Done outside the diff
stable(site root redirects to/en/stable/),latestis hidden, PR previews are on, and an automation rule activatesvX.Y.Z-alpha|betatags as they are created.RTD_TOKENrepo secret set.sarayu-reddy(404 on every push).latestgit tag, which had no release;stablereplaced it onmain. It pointed at2c60d97fe938ac6b24863c544df9b4cdf91c449aif it's ever needed back.Additional Notes
Locally, Windows Python 3.10 crashes intermittently inside docutils while building. WSL and RTD are unaffected. This is noted in DEVELOPER_GUIDE.