docs: implement publishing pipeline (#617)#646
Conversation
Merge ProtectionsYour pull request matches the following merge protections and will not be merged until they are valid. 🟢 Enforce conventional commitWonderful, this rule succeeded.Make sure that we follow https://www.conventionalcommits.org/en/v1.0.0/
|
|
Publishing is now running. This PR is tagged with Mintlify has temporarily been updated to publish automatically from this Normally a PR will just do validation, but not publish @HendrikStrobelt you may want to take a look. Focus is on the process - and only content that fundamentally breaks the process. General content changes can be in other PRs. Issues already open in a few areas, docstrings, and a catchup of changes made over last 1-2 weeks. I have more things to fix/consolidate in the pipeline, check reported soft-errors etc - just a heads up that we have the core of the end-end process |
Add docs-publish.yml workflow that builds, validates, and deploys docs to orphan deployment branches (docs/staging from main, docs/production from releases). Replaces docs-autogen-pr.yml. Includes pre-commit hooks for MDX validation and docstring quality, docs/PUBLISHING.md strategy document, and .gitignore entries for generated API docs. Validation is soft-fail by default with strict_validation toggle. workflow_dispatch supports force_publish for testing.
Safer default for manual dispatch — testing deploys to docs/preview rather than docs/staging. The automatic paths (push→staging, release→production) are unaffected.
PRs with the 'docs-preview' label deploy to docs/preview branch. PRs without the label only run build + validation (no deploy). Also triggers on 'labeled' event so adding the label fires the workflow.
Update PUBLISHING.md with docs/preview branch, label-based PR deployment, and updated manual dispatch instructions.
Fork PRs can't deploy because GITHUB_TOKEN lacks write access to upstream. Documented the workaround (manual dispatch or push to upstream). Fixed MD032 blank line warnings.
3aa4f3d to
b38140b
Compare
psschwei
left a comment
There was a problem hiding this comment.
In general, this all makes sense to me and I'm on board.
will hold off on approval in case others want to chime in
markdownlint is already in Docs/build-and-validate with proper path filtering. Running it in ci.yml on every PR regardless of changed files was wasteful and duplicated.
Each validation step now tees its output to a temp log file. A final "Write job summary" step in both workflows writes a markdown table to $GITHUB_STEP_SUMMARY showing pass/fail per sub-check with key stats (lint issues, coverage %, symbol counts, test pass/fail counts). Collapsible <details> blocks include the full output for deeper inspection without cluttering the summary view.
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23061253316 ba60af6
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23061346635 9ad4ee0
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23061420805 caacd86
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23062028587 f13d445
…e action versions audit_coverage.py emitted 'All documented symbols pass quality checks' even when --quality was not passed (quality_issues always [] without the flag). Now emits 'skipped' when --quality is absent, so the annotation is accurate. Add --quality to the CI audit step so quality is actually run and surfaced in the job summary. Update actions to latest versions (Node.js 24 compatible): - actions/checkout v4 → v6 - astral-sh/setup-uv v5 → v7 - actions/upload-artifact v4 → v7 - actions/download-artifact v4 → v8
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23062334945 9b92068
- Split quality row into proper Result/Details columns matching table header - Strip 'run locally' from annotation message (we run it in CI now) - Add separate 'Docstring quality details' collapsible extracted from the coverage log so quality issues are easy to expand inline
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23062493652 768b497
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23062549524 c2e3915
Individual annotations per missing docstring don't point to diff lines so they just create noise in the Annotations panel (14+ entries). The single summary annotation and the job summary collapsible provide sufficient visibility. Consistent with markdownlint and MDX validation which only emit one top-level result, not per-issue annotations.
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23062646838 22dfefc
…re-commit hook - Strip ANSI escape codes from captured logs before writing to GITHUB_STEP_SUMMARY so collapsible sections render as clean text rather than raw escape sequences - Move docs-docstring-quality pre-commit hook to stages: [manual] with a TODO pointing to #616 — Griffe loads the full package (~10s) which is too slow for normal commit flow; re-enable once quality issues reach 0 - CI audit still checks all symbols including methods (no --no-methods) so the job summary reports the full picture; hard-fail deferred to #616
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23063110745 2e4cd79
- MDX Validation row now shows per-check error counts (e.g. "1 syntax error(s), 2 broken link(s)") instead of just PASS/FAIL - Markdownlint row already showed issue count; API Coverage row shows pct + symbols - Fix: coverage log is split at the quality section boundary so the docstring quality details collapsible no longer duplicates the coverage output
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23063294187 0d3914f
|
Added a summary For example at https://github.com/generative-computing/mellea/actions/runs/23063294187?pr=646
|
|
#614 should address many (not all) of the issues reported in the current checks. I suggest we now get this PR reviewed/merged -- and Monday I'll revisit 614 & finish out the discussion on doc string formatting. If that changes the requirements of the parsers here will update then. One step forward.... it's a bit iterative - but we'll converge! |
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23063949076 cee2de4
|
Note the job summary I mentioned above had truncated output. That's been fixed ( see https://github.com/generative-computing/mellea/actions/runs/23063949076?pr=646 ) There may be improvements to the reports - but can defer to later. |
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23064193854 dbc9ad6
Branch: 646/merge Trigger: pull_request (PR #646) Run: https://github.com/generative-computing/mellea/actions/runs/23064862295 6610ae0
|
Updated mintlify so we are now publishing to the staging branch and url from merges to main |

docs: implement publishing pipeline
Type of PR
Description
Fixes #617
This PR completes the end-to-end documentation publishing pipeline for
Mellea. From a single push to
main, the full Mintlify docs site —hand-authored guides plus generated API reference — is automatically built,
validated, and deployed. Reviewers can now see live docs at the staging
environment without any manual steps.
See
docs/PUBLISHING.mdfor the full architecture, branch strategy, and local development workflow.Job summary output: Checks tab → any
Docsrun → Summary. Example: https://github.com/generative-computing/mellea/actions/runs/23064193854Example docs job summary output
Changes
docs-publish.yml— new unified workflow (replacesdocs-autogen-pr.yml). Deploys todocs/staging,docs/production, ordocs/previewdepending on trigger. Soft-fail validation by default; rich job summaries on every run.quality.yml— additive only: job summary with pre-commit outcome and test pass/fail counts..pre-commit-config.yaml— MDX validation hook (normal flow) + docstring quality hook (manual-only pending ci: gate doc quality in CI and pre-commit to prevent future degradation #616).audit_coverage.py— fix false-positive GHA annotation; remove noisy per-item annotations.docs/PUBLISHING.md— design doc: architecture, branch strategy, local dev, Mintlify config.Dependencies
Both prerequisites have merged:
docs: complete developer documentation rewrite (#480) #601 — static docs rewrite✅docs: Docs/api pipeline improvements #611 — API docs pipeline✅Follow-on
point the Mintlify production site at
docs/production(populated on thenext release) and update the staging environment to track
docs/staging.This is the final step to make the new docs the live public site.
Testing