This repository was archived by the owner on May 29, 2026. It is now read-only.
ci(documentation): run build/validate on PRs, deploy only on push#73
Merged
Conversation
Split the single deploy job into two: - build: runs on every event (push, schedule, workflow_dispatch, pull_request). Checks out, installs, runs `npm run ci` (which builds and runs each site's postbuild AI-baseline validator from @conduction/docusaurus-preset). Uploads the build/ tree as an artifact on the events that go on to deploy. - deploy: runs only on push / schedule / workflow_dispatch. Downloads the artifact, adds .nojekyll + CNAME, pushes to gh-pages. Why - Sites that ship the AI-baseline gate (robots.txt, llms.txt, sitemaps, JSON-LD, FAQPage, og:image) get PR-time enforcement fleet-wide without each repo needing its own workflow file. Today, the shared workflow's `if: push || schedule || dispatch` guard means a PR can drop schemas, break a sitemap, or remove robots.txt without CI ever firing the validator. The bad code lands, the nightly cron catches it the next morning, production is already broken. This shifts detection left. - Separating build from deploy also de-risks the deploy itself: if the build succeeds but a deploy step fails for a transient reason, we can re-run just the deploy job without rebuilding. Compatibility - No input contract changes. Sites that already call this workflow with `cname: ...; source-folder: ...` keep working. - PRs that previously got no CI signal at all now get a green check (or a red one) from the new `build` job. - Sites without a postbuild validator (most of the fleet today) see the build job run a vanilla `npm run ci` and pass; the gate only fires for sites that have wired it.
This was referenced May 18, 2026
Merged
feat(docs): wire AI-crawler baseline (preset 3.4.0 + validator + llms.txt)
ConductionNL/decidesk#211
Merged
Merged
feat(docs): wire AI-crawler baseline (preset 3.4.0 + validator + llms.txt)
ConductionNL/pipelinq#365
Merged
feat(docs): wire AI-crawler baseline (preset 3.4.0 + validator + llms.txt)
ConductionNL/docudesk#182
Merged
feat(docs): wire AI-crawler baseline (preset 3.4.0 + validator + llms.txt)
ConductionNL/shillinq#140
Merged
Merged
Merged
feat(docs): wire AI-crawler baseline (preset 3.4.0 + validator + llms.txt)
ConductionNL/openbuilt#85
Merged
This was referenced May 18, 2026
6 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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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
Split the shared documentation workflow into a
buildjob that runs on every event (including pull_request) and adeployjob that runs only on push / schedule / workflow_dispatch. Net effect: every docs site that uses this workflow now gets PR-time CI on the build, including the AI-baseline validator that ships postbuild from @conduction/docusaurus-preset.Why
Today the workflow has:
at the top of the only job. PRs match none of those, so the whole job is SKIPPED. A PR can:
static/robots.txtstatic/llms.txt<DetailHero>(via a preset version pin downgrade)/support...and CI gives a green check anyway. The bad code lands. The nightly cron rebuilds, sees the regression, fails the deploy. By then production is already broken.
This PR shifts detection left. PRs now run the same
npm run ci(build + validate) that production runs. Sites that ship the AI-baseline gate (robots.txt, llms.txt, sitemap shape, JSON-LD on the homepage and/apps/<slug>pages, FAQPage on/support/install/iso, og:image, twitter meta) get fleet-wide PR-time enforcement of the contract without each repo needing its ownvalidate-ai-baseline.ymlworkflow.What changed
buildjob: runs on every event. Checks out, installs, runsnpm run ci. Uploads thebuild/tree as an artifact on the events that go on to deploy.deployjob: needs thebuildjob. Only fires on push / schedule / workflow_dispatch. Downloads the artifact, adds.nojekyll+CNAME, pushes to gh-pages.Compatibility
cname: ...; source-folder: ...keep working unchanged.buildjob.npm run ciand pass. The gate only fires for sites that have wired it locally (conduction-website is the first; the rest of the fleet follows in separate PRs).Test plan
buildjob exists and runsbuildonly (no deploy)developmenton any consuming docs site triggersbuildthendeploy