Skip to content

ci(docs): versioned mdBook deploys + version-pinned release-note links#187

Merged
robtaylor merged 1 commit into
mainfrom
ci/versioned-docs
Jul 9, 2026
Merged

ci(docs): versioned mdBook deploys + version-pinned release-note links#187
robtaylor merged 1 commit into
mainfrom
ci/versioned-docs

Conversation

@robtaylor

Copy link
Copy Markdown
Contributor

Closes the "release notes should link to this release's docs" gap. The mdBook site is a single "latest" gh-pages deploy, so notes couldn't point to version-frozen pages.

What

On the legacy (branch-based) Pages flow — which supports this cleanly (peaceiris destination_dir + keep_files), unlike the modern single-artifact Actions flow:

  • release.yml docs-version job: on every release tag, mdbook build → deploy the book to gh-pages /<tag>/ (keep_files: true). A frozen copy per release. Runs for real tags only; independent of the binary build.
  • ci.yml main deploy: add keep_files: true so the /vX.Y.Z/ subdirs survive. "latest" stays at the site root — existing URLs unaffected.
  • release.yml notes step: rewrite `docs/foo.md`[docs/foo.md](https://gpu-eda.github.io/Jacquard/<tag>/foo.html) — the version-pinned mdBook page. CHANGELOG keeps clean repo-relative paths.
  • CHANGELOG [Unreleased]: one-sentence summary lead-in (becomes the release intro).
  • release-process.md: documents the notes + versioned-docs conventions.

Validation

  • actionlint clean on both files (bar the pre-existing SC2129 in an unrelated step).
  • sed rewrite tested locally — top-level and subpath (docs/adr/…) both map correctly, subpaths preserved.
  • gh-pages deploys are CI-only; the real proof is the next main push (root still serves + no wipe) and the next release tag (/<tag>/ appears, notes link resolves). I'll watch those.

Notes / follow-up

  • Cross-page version picker (a versions.json + theme dropdown) is deliberately deferred — this PR lands the version-pinned URLs the notes need; the picker is UI polish.
  • keep_files: true never deletes, so a deleted doc page leaves a stale .html at root — acceptable tradeoff for not breaking existing root URLs.

Docs are a single "latest" gh-pages deploy, so release notes couldn't
link to the docs *as of that release*. Add per-release versioned docs on
the (legacy, branch-based) Pages flow — the flow that supports this
cleanly via peaceiris destination_dir + keep_files:

- release.yml `docs-version` job: on every release tag, mdbook build +
  deploy the book to gh-pages `/<tag>/` (keep_files) — a frozen copy.
- ci.yml main deploy gains `keep_files: true` so those version subdirs
  survive; "latest" stays at the site root (existing URLs unaffected).
- release.yml notes step rewrites `` `docs/foo.md` `` refs to
  `[docs/foo.md](https://gpu-eda.github.io/Jacquard/<tag>/foo.html)` — the
  version-pinned mdBook page. CHANGELOG keeps clean repo-relative paths.
- CHANGELOG [Unreleased] gains a one-sentence summary lead-in (becomes the
  release intro). release-process.md documents the notes + versioned-docs
  conventions.

Version picker across pages is a deliberate follow-up; this lands the
version-pinned URLs the release notes need.

Co-developed-by: Claude Code v2.1.201 (claude-opus-4-8)
@robtaylor robtaylor merged commit 4f0ca01 into main Jul 9, 2026
25 checks passed
@robtaylor robtaylor deleted the ci/versioned-docs branch July 9, 2026 20:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant