Repository navigation
docs: Publish the documentation of each release, and of main at /dev/ - #49
Merged
Merged
Conversation
This was referenced Oct 21, 2026
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.
The site was built from
mainalone, and the release archives link to it. So once 0.2 changes merged, a user of 0.1.1 read about behavior their binary does not have: the changes since 0.1.1, the new release notes section, and from #48 on, options 0.1.1 does not accept.The site now has one version of the documentation per release series, plus the development version:
//X.Y//0.1/)/dev/mainThe root keeps documenting the release, so every existing link (the README's, the 0.1.x archives', bookmarks) keeps working and keeps showing what a release does.
/0.1/is the stable path to the same pages.website/scripts/build-site.shbuilds each version from its own sources: this tree for/dev/, and for each series the files of its tag, taken withgit archive(no checkout). Each build runs Doxygen, Sphinx with-W, and the book's sidebar check, asbuild-docs.shdoes. The title and a banner come in through-D, so an old tag'sconf.pyneeds nothing new:/dev/: "This is the documentation of the development version, 0.2.0-dev, built frommain. The latest release is 0.1.1: its documentation."mainadds."Titles name the version (
Commands and flags - CppVerify 0.1.1). Before any release, the development version is also the root.cppverify-docs.ymlfetches the tags and publisheswebsite/site. Pull requests build the whole site too, so a change that breaks an old version's build shows up there.The
github-pagesenvironment allows deployment frommainonly, so a tag cannot publish.cppverify-release.ymltherefore runs the documentation workflow onmainonce it has created a release, which adds the new tag's series. ItsREADME.txtand release notes now link to the series of the release,/X.Y/, instead of the root. A candidate, such as 0.2.0-rc.1, is documented at/0.2/until 0.2.0.I chose the root as the latest release, rather than
/dev/or a redirect page, because that is the one layout under which no published link moves. It is the decision to look at before merging: deploying it changes what the site's root shows frommainto 0.1.1.Docs:
website/README.mddescribes the layout and how it is built and published, the README links to the development version, and the release notes get an entry under "Running cpp-verify".Checked:
build-site.shbuilds the site locally (in a virtual environment withwebsite/requirements.txt). The root and/0.1/show 0.1.1,/dev/shows 0.2.0-dev, and every page has its banner, the deep pages of each version included. Each version has its Doxygen pages.v0.1.0-rc.1 v0.1.0 v0.1.1 v0.2.0-rc.1 v0.2.0-rc.2 v0.2.0 v0.10.0-rc.1 llvmorg-23.1.3), gives0.10 v0.10.0-rc.1,0.2 v0.2.0, and0.1 v0.1.1, with v0.2.0 at the root. Without v0.2.0, it gives0.2 v0.2.0-rc.1, with v0.1.1 at the root.devand0.1from the fetched tags and uploaded the site. The deploy runs onmainonly, so the first push tomainafter the merge publishes it. The release workflow's new step runs only when a release is published.The release checklist in the private notes gets the new step.