noxys-doc Release Flow
Authoritative reference: ADR-013 (release cadence) + this document (per-repo deployment flow for
noxys-doc).For the cross-repo
feat → staging → mainpolicy, see Release Process.
Targets
| Branch | Environment | URL | Trigger |
|---|---|---|---|
staging | Staging preview | doc-staging.noxys.cloud* | push to staging |
main | Production | doc.noxys.cloud | push to main |
*Cloudflare Pages preview deployment of the staging branch on the noxys-doc Pages project. Mapped via the project's custom domain settings.
Pipeline
feat/foo ──PR──► staging ──PR──► main ──tag──► doc.noxys.cloud
│ │ │
│ │ └─ deploy.yml (Cloudflare Pages production)
│ └─ deploy-staging.yml (Cloudflare Pages preview)
└─ ci.yml (build + typecheck)
Step-by-step
- Feature branch —
feat/<short-name>cut fromstaging. - PR to
staging—ci.ymlruns (build + typecheck). Required to pass. - Merge to
staging— squash merge.deploy-staging.ymldeploys to the staging preview URL.ci.ymlalso re-runs on push. - Manual smoke test on
doc-staging.noxys.cloud— navigate critical pages (Home, Architecture, Handbook, Legal). - Release PR
staging → main— opened when staging is green and smoke tested. Title format:release: noxys-doc YYYY-MM. - Merge to
main— squash merge.deploy.ymldeploys to production (doc.noxys.cloud). - Tag — calendar-versioned tag pushed by maintainer:
noxys-doc-YYYY-MM(e.g.noxys-doc-2026-05).
CI/CD Workflows
| Workflow | Trigger | Purpose |
|---|---|---|
.github/workflows/ci.yml | PR to main/staging, push staging | Build + typecheck |
.github/workflows/deploy-staging.yml | push staging, manual dispatch | Deploy to Cloudflare Pages preview |
.github/workflows/deploy.yml | push main, manual dispatch | Deploy to Cloudflare Pages production |
.github/workflows/dependabot-automerge.yml | dependabot PRs | Auto-merge minor/patch dependency bumps |
Versioning
noxys-doc is calendar-versioned: YYYY-MM. Continuous deploy — every merge to main is published. Tags are advisory, not gated.
Hotfix flow
For broken prod (e.g. broken link, factual error in a published page):
- Branch
fix/<short-name>frommain. - Minimum change. PR directly to
mainwith explicit CEO/CTO approval (see Release Process — Hotfix). - After merge, back-port the same commit (cherry-pick) to
stagingso histories converge. - Document the incident in the Obsidian vault
01 - Journal/.
Default flow is
feat → staging → main— use the hotfix path only when staging would meaningfully delay a public-facing fix.
Required secrets (org-level)
CLOUDFLARE_API_TOKEN— scoped tonoxys-docPages project,Pages:Editpermission only.CLOUDFLARE_ACCOUNT_ID— Cloudflare account ID.
Both are inherited from the organization secret store. No per-repo override.
Rollback
Production is statically built. To rollback:
- Identify the last known-good commit on
main(use thenoxys-doc-YYYY-MMtags or the Cloudflare Pages deployment history). - Preferred: revert the offending merge commit on
mainvia a revert PR — re-triggersdeploy.ymland produces a clean audit trail. - Emergency: in the Cloudflare Pages dashboard, promote the previous production deployment ("Rollback to this deployment"). Then immediately open a revert PR so git matches reality.
Validation checklist
Before merging staging → main:
-
ci.ymlgreen on the lateststagingcommit -
deploy-staging.ymlgreen — staging preview reachable - Manual smoke test on
doc-staging.noxys.cloud(Home, navigation, search, at least one page per top-level section) - No
onBrokenLinks: throwfailures (CI catches these) - No open
BLOCKERissues against the release