Skip to content

Simple guide · Contributing

Page status: Active

GitHub Pages Publishing for the NutsNews Wiki

Preview, validate, stage, launch, verify, and roll back the static NutsNews Wiki on GitHub Pages.

Visual overview

Primary diagram

System map

Reviewed wiki sources pass the complete quality gate, emit an exact ready commit, build and inspect an immutable artifact, and deploy to the default GitHub Pages URL. Production cutover adds only a DNS-only wiki CNAME, deploys the root artifact, configures the custom domain, waits for HTTPS, and performs public smoke tests or rolls back to the default URL.

Render the repository-owned system map when you need it.

Diagram is not rendered yet.

View as text
GitHub Pages Publishing for the NutsNews Wiki

Reviewed wiki sources pass the complete quality gate, emit an exact ready commit, build and inspect an immutable artifact, and deploy to the default GitHub Pages URL. Production cutover adds only a DNS-only wiki CNAME, deploys the root artifact, configures the custom domain, waits for HTTPS, and performs public smoke tests or rolls back to the default URL.

---
title: Wiki publishing pipeline
---

flowchart LR
  accTitle: GitHub Pages Publishing for the NutsNews Wiki
  accDescr {
    Reviewed wiki sources pass the complete quality gate, emit an exact ready commit, build and inspect an immutable artifact, and deploy to the default GitHub Pages URL. Production cutover adds only a DNS-only wiki CNAME, deploys the root artifact, configures the custom domain, waits for HTTPS, and performs public smoke tests or rolls back to the default URL.
  }
  change["Reviewed source or site-code change"] --> quality["Quality: contracts, fixtures, build, browser"]
  quality --> ready{"All gates pass?"}
  ready -->|No| fix["Fix source; rerun complete gate"]
  fix --> quality
  ready -->|Yes| sha["Emit validated SHA"]
  sha --> exact["Check out and verify exact SHA"]
  exact --> build["Build allowlisted site and base"]
  build --> inspect["Stamp commit; inspect budgets and final artifact"]
  inspect --> upload["Upload pinned Pages artifact"]
  upload --> deploy["Deploy through main-only environment"]
  deploy --> default["Smoke default /nutsnews-docs URL"]
  default --> launch{"Production launch approved?"}
  launch -->|No| default
  launch -->|Yes| dns["Set only DNS-only CNAME wiki to ramideltoro.github.io"]
  dns --> root["Deploy validated production-root artifact"]
  root --> domain["Set Pages custom domain"]
  domain --> https["Wait for certificate; enforce HTTPS"]
  https --> smoke{"Production smoke passes?"}
  smoke -->|Yes| live["Launch verified"]
  smoke -->|No| rollback["Redeploy pre-cutover artifact; remove custom domain; repair only wiki CNAME"]

GitHub Pages Publishing for the NutsNews Wiki

Fullscreen diagram view.

GitHub Pages publishing for the NutsNews wiki

Section titled “GitHub Pages publishing for the NutsNews wiki”

The repository is the source of truth. Astro builds the docs into static files, and GitHub Actions publishes only a checked artifact.

  • Before cutover: https://ramideltoro.github.io/nutsnews-docs/
  • After cutover: https://wiki.nutsnews.com/
  • The custom domain stays unset until the launch gate.

Do not edit _site/, generated content, reports, caches, or the live Pages files.

Terminal window
npm ci
npm run dev -- --host 127.0.0.1 --port 4321

For a production preview:

Terminal window
npm run build
npm run preview -- --host 127.0.0.1 --port 4321

Run the documentation and browser gates:

Terminal window
npm run wiki:prepare
npm run validate:content
npm run validate:links
npm run validate:mermaid
npm run test:content-routes
npm run test:workflow
npm run test:pages-artifact
npm run test:browser
npm run build

Pull requests run checks but never deploy.

A push or manual run on main follows this order:

  1. Check the 227 sources, both mirror sets, approvals, diagrams, links, secrets, routes, build, budgets, accessibility, keyboard flows, and screenshots.
  2. Mark the exact commit as ready only after every check passes.
  3. Check out that same commit in the Pages build.
  4. Build, stamp, and inspect the final artifact.
  5. Upload it.
  6. Deploy it from the main-only Pages environment.

Only deployment can write to Pages. The workflow does not use a repository secret or an OpenAI key.

  1. Finish every platform and local QA gate. Smoke-test the default URL.

  2. Prepare and fully validate the production-target site-code pull request, but do not merge it.

  3. In Cloudflare, change only this record:

    TypeNameTargetProxy
    CNAMEwikiramideltoro.github.ioDNS only

    Do not change any other DNS record.

  4. Merge the ready production-target pull request and wait for its root artifact to deploy.

  5. Set the repository Pages custom domain to wiki.nutsnews.com.

  6. Wait for GitHub’s certificate, then turn on Enforce HTTPS.

  7. Test the release stamp, root, both audiences, search/History, diagrams, 404, and nested pages.

Record the last-good commit SHA first. Verify https://wiki.nutsnews.com serves it after a production rollback and test both audiences; after a cutover fallback, verify the default project URL instead.

For a bad production release, revert or rerun the last good commit, require every gate, confirm release.json, and smoke the affected routes.

For a failed domain cutover:

  1. Redeploy the last pre-cutover /nutsnews-docs artifact.
  2. Remove the repository custom domain and verify the default URL.
  3. Remove or correct only the wiki CNAME if DNS caused the failure.
  4. Leave every other DNS record unchanged and repeat the full gate.
  • Quality: check approval, inventory, mirrors, diagrams, links, or browser results.
  • Build: check the exact commit, site/base, Astro, Pagefind, and budgets.
  • Artifact: check the stamp and blocked secret/env/source/CNAME files.
  • Deploy: check the main environment, Pages status, permissions, and artifact.
  • Domain: check the one DNS-only CNAME, custom-domain status, certificate, and HTTPS.

Fix the source and rerun. Do not edit deployed HTML or use .wiki-build, wiki-push, Jekyll, or bundle commands.