Deployment & Distribution
Deployment & Distribution
The UI bundle is built by Cloudflare Pages and distributed to the docs aggregator via Cloudflare Access-authenticated HTTPS.
Cloudflare Pages (ui.domusdigitalis.dev)
The domus-antora-ui repo is connected to Cloudflare Pages:
| Setting | Value |
|---|---|
Build command |
|
Output directory |
|
Node version |
>= 16.0.0 |
Trigger |
Push to |
URL |
|
Key output |
|
The npm run build script runs gulp bundle && cp -r static/* build/, producing the bundle plus any static assets (landing page, etc.) in the build/ directory.
Cloudflare Access Authentication
The bundle URL is protected by Cloudflare Zero Trust Access:
-
Application: Configured in CF Zero Trust > Access > Applications
-
Policy: Service token authentication (no interactive login)
-
Headers required:
-
CF-Access-Client-Id: <service-token-id> -
CF-Access-Client-Secret: <service-token-secret>
-
|
Without valid CF Access headers, |
build.sh CI Flow
The domus-docs/build.sh script (run by Cloudflare Pages CI) performs:
-
Fetch bundle:
curlwith CF Access headers downloadsui-bundle.zipfromui.domusdigitalis.dev -
Validate bundle:
unzip -tverifies zip integrity,grepconfirmsdomus-theme.cssis present -
Inject auth:
sedreplaces GitHub URL prefixes with PAT-authenticated URLs usingCF_ANTORA_GIT_TOKEN -
Build site:
npx antora --quiet antora-playbook.yml
Environment variables required:
| Variable | Purpose |
|---|---|
|
Cloudflare Access service token ID |
|
Cloudflare Access service token secret |
|
GitHub PAT for private repo access during Antora build |
Local Development Workflow
For local builds, the bundle is referenced by filesystem path:
# 1. Build the UI bundle
cd ~/atelier/_bibliotheca/domus-antora-ui
make
# 2. Build the docs site with the local bundle
cd ~/atelier/_bibliotheca/domus-docs
make
The local playbook (antora-playbook-local.yml) points directly to the build output:
ui:
bundle:
url: /home/evanusmodestus/atelier/_bibliotheca/domus-antora-ui/build/ui-bundle.zip
snapshot: true
snapshot: true ensures Antora always reads the latest bundle, even if the file path hasn’t changed.
Git Mirrors
The repository is mirrored across three platforms:
| Platform | URL |
|---|---|
GitHub (primary) |
|
GitLab |
|
Gitea |
Bundle Versioning
-
package.jsonversion:1.0.0 -
Bundle is not semantically versioned for distribution —
snapshot: truebypasses caching -
Cloudflare Pages provides unique deploy URLs per build for rollback capability
-
.gitlab-ci.ymlexists for GitLab CI (secondary pipeline)