Skip to content

ci: add enforcing internal-link check across all collections (#262 G)#293

Merged
tuxmea merged 3 commits into
OpenVoxProject:masterfrom
miharp:docs/issue-262-link-check
Jun 4, 2026
Merged

ci: add enforcing internal-link check across all collections (#262 G)#293
tuxmea merged 3 commits into
OpenVoxProject:masterfrom
miharp:docs/issue-262-link-check

Conversation

@miharp
Copy link
Copy Markdown
Contributor

@miharp miharp commented Jun 3, 2026

What

Adds the regression gate for the broken-link effort (workstream G of #262): a rake test:links task plus an Internal links CI job (in test.yml, wired into the enforced tests gate) that run html-proofer over every collection and fail CI on broken internal links.

  • Checks each collection's <name>/latest build — a symlink to the current stable version, so every page is checked once and the gate follows new versions automatically. Covers openvox, openvox-server, openvoxdb, openbolt, openfact, ecosystem, openvox-containers.
  • The job generates all reference docs into docs/ and builds the site first (same as the publish workflow), so the shared sidebar's links into generated reference pages resolve.
  • Adds html-proofer to the Gemfile.

Plus two real link bugs the all-collections sweep surfaced (separate commit):

  • openbolt glossary: plan_functionsplan_functions.html
  • ecosystem quickref: /latest/config_file_environment.html/openvox/latest/config_file_environment.html (missing collection prefix)

Verification

Full CI-equivalent run locally (generate all references into docs/jekyll buildrake test:links):

Checking 1752 internal links
Ran on 438 files!
HTML-Proofer finished successfully.

Rubocop clean.

Known temporary ignore (OpenBolt #202)

The nine OpenBolt generated reference pages (bolt_*_reference, plan_functions, packaged_modules, privilege_escalation) 404 site-wide because CI builds the newest openbolt release tag (currently 5.5.0), which predates the front-matter fix that lets them render. They're linked from the shared sidebar on every page, so the task ignores them by basename until an openbolt release > 5.5.0 ships the fix (OpenVoxProject/openbolt#233 + #251, both merged to openbolt main). Remove the ignore in Rakefile once that release lands — tracked via #202.

Closes #262

miharp added 2 commits June 3, 2026 17:30
Add a `rake test:links` task and a Link Check workflow that run
html-proofer over every collection's `<name>/latest` build (a symlink to
the current stable version, so each page is checked once and the check
follows new versions automatically). Covers openvox, openvox-server,
openvoxdb, openbolt, openfact, ecosystem, and openvox-containers.

The workflow generates all reference docs into docs/ and builds the site
first, matching the publish workflow, so the shared sidebar's links into
the generated reference pages resolve.

The nine OpenBolt generated reference pages 404 site-wide until an
openbolt release > 5.5.0 ships the front-matter fix (issue OpenVoxProject#202): CI
builds the newest openbolt release tag, which predates it, and those
pages are linked from the shared sidebar on every page. They're ignored
by basename until OpenVoxProject#202 ships in a release.

Part of OpenVoxProject#262 (workstream G)

Signed-off-by: Michael Harp <mike@mikeharp.com>
- openbolt glossary: `plan_functions` -> `plan_functions.html` so the
  link resolves (and matches the OpenVoxProject#202 ignore until the page renders).
- ecosystem quickref: `/latest/config_file_environment.html` ->
  `/openvox/latest/config_file_environment.html`; the link was missing
  its collection prefix.

These were the only non-OpenVoxProject#202 broken links left once the check covered
all collections.

Signed-off-by: Michael Harp <mike@mikeharp.com>
@miharp miharp requested a review from a team as a code owner June 3, 2026 21:33
Comment thread Rakefile
Comment thread .github/workflows/link-check.yml Outdated
@@ -0,0 +1,42 @@
---
name: Link Check
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you integrate the check into https://github.com/OpenVoxProject/openvox-docs/blob/master/.github/workflows/test.yml? That makes it easier for us to enforce the CI job (test.yml has our generic dummy check. It always runs and CI enforces it).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep, I debated that as well

Move the Internal links job from the standalone Link Check workflow into
test.yml and add it to the alls-green `tests` gate, so it runs and is
enforced alongside the existing rubocop/build checks. Remove the separate
link-check.yml.

Per review on OpenVoxProject#293: test.yml always runs and CI enforces its gate, so the
link check belongs there rather than in its own workflow.

Signed-off-by: Michael Harp <mike@mikeharp.com>
Comment thread docs/_openbolt_5x/glossary.md
@tuxmea tuxmea merged commit d5baed2 into OpenVoxProject:master Jun 4, 2026
5 checks passed
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.

Fix broken internal links in the openvox collection

3 participants