Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 29 additions & 2 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,40 @@
name: Documentation

# Publishes the docs site in docs/ to the Cloudflare Worker that serves it.
#
# Triggers on `development`, like every fleet app. This template used to listen
# on a `documentation` branch; across the fleet nobody pushed to one after
# 2026-05-25, so the sites stopped being rebuilt while docs changes merged to
# development published nothing.
on:
push:
branches: [documentation]
branches: [development]
pull_request:
branches: [documentation]
branches: [development]

jobs:
deploy:
uses: ConductionNL/.github/.github/workflows/documentation.yml@main
# A reusable workflow receives no secrets by default. Without this mapping
# the publish step finds CF_API_TOKEN empty, skips itself, and the run ends
# green having changed nothing.
#
# The template repository itself must never publish: the org secrets reach
# it, and the deploy registers every host as a Cloudflare custom domain, so
# one push here would put a live app-template.conduction.nl site online.
# The check reads GitHub's is_template flag rather than the repository name,
# because app-create rewrites the template's repository name into the new
# app's, which would switch publishing off in every scaffolded app.
# The template still builds and validates its docs on every run.
secrets:
CF_API_TOKEN: ${{ !github.event.repository.is_template && secrets.CF_API_TOKEN || '' }}
CF_ACCOUNT_ID: ${{ !github.event.repository.is_template && secrets.CF_ACCOUNT_ID || '' }}
with:
cname: app-template.conduction.nl
# Every host the worker answers on, in full: the deploy removes any host
# left out. After a rename, add the new host and keep the old one here.
docs-hosts: app-template.conduction.nl
# Pinned, not derived: once the app is renamed the hostname and the worker
# no longer share a name, and a derived name makes wrangler create a new
# worker while the domain keeps routing to the old one.
worker-name: app-template-docs
6 changes: 0 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
.phpunit.cache/

/node_modules/
/website/node_modules/
/website/.docusaurus/
/js/
/custom_apps/
/config/
Expand Down Expand Up @@ -84,10 +82,6 @@ docker/dolphin/models/
!issues/
!issues/**

/docusaurus/node_modules/
/docusaurus/build/
/docusaurus/.docusaurus/

# Docusaurus documentation site (docs/) — build artefacts only; sources are tracked
/docs/node_modules/
/docs/build/
Expand Down
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,12 +209,12 @@ Each release automatically:

## Documentation Release Process

Documentation is built with [Docusaurus](https://docusaurus.io/) and deployed to GitHub Pages.
Documentation is built with [Docusaurus](https://docusaurus.io/) and served by a Cloudflare Worker.

1. Documentation source lives in the `docs/` (or `docusaurus/`) folder on any branch
2. Push or merge to the `documentation` branch triggers the build
1. Documentation source lives in the `docs/` folder on any branch
2. A push or merge to `development` triggers the build (`.github/workflows/documentation.yml`)
3. Docusaurus builds the static site
4. The site is deployed to GitHub Pages with a custom domain (e.g., `openregister.app`)
4. The site is published on the app's own host, `<app-id>.conduction.nl`

Each app has its own documentation site — see the app's README for its URL.

Expand Down
Loading
Loading