Cloudflare Pages Deployment
This site is deployed to Cloudflare Pages with Zero Trust authentication.
Architecture
| Component | Value |
|---|---|
URL |
|
Platform |
Cloudflare Pages |
Build Tool |
Antora |
Authentication |
Cloudflare Access (Zero Trust) |
Build Configuration
Build Script
The build.sh script injects the GitHub token into playbook URLs at build time:
#!/bin/bash
set -e
# Check for required token
if [ -z "$CF_ANTORA_GIT_TOKEN" ]; then
echo "ERROR: CF_ANTORA_GIT_TOKEN environment variable not set"
exit 1
fi
# Inject token into playbook URLs
sed -i "s|https://github.com/EvanusModestus/|https://${CF_ANTORA_GIT_TOKEN}@github.com/EvanusModestus/|g" antora-playbook.yml
# Run Antora build (--quiet suppresses URL logging)
npx antora --quiet antora-playbook.yml
The --quiet flag prevents token exposure in build logs.
|
Cloudflare Access
Deployment Workflow
-
Make changes to any domus-* repo
-
Push to GitHub
-
Cloudflare Pages automatically rebuilds (via deploy hooks)
All content repos have webhooks configured to trigger rebuilds on push.
Deploy Hooks
Deploy hooks enable automatic rebuilds when any content repo is updated.
Architecture
domus-infra-ops ──┐
domus-ise-linux ──┼──→ GitHub Webhook ──→ Cloudflare Deploy Hook ──→ Rebuild
domus-netapi-docs ──┤
domus-secrets-ops ──┤
domus-linux-ops ──┘
Configured Webhooks
| Repository | Webhook Status |
|---|---|
domus-infra-ops |
✓ Active |
domus-ise-linux |
✓ Active |
domus-netapi-docs |
✓ Active |
domus-secrets-ops |
✓ Active |
domus-linux-ops |
✓ Active |
Setup (For Reference)
1. Create Deploy Hook in Cloudflare
-
Cloudflare Dashboard → Pages → domus-docs → Settings → Builds & deployments
-
Scroll to Deploy hooks
-
Click Add deploy hook
-
Name:
github-content-repos -
Copy the generated URL
2. Add Webhook to GitHub Repos
HOOK_URL="https://api.cloudflare.com/client/v4/pages/webhooks/deploy_hooks/YOUR_HOOK_ID"
for repo in domus-infra-ops domus-ise-linux domus-netapi-docs domus-secrets-ops domus-linux-ops; do
gh api repos/EvanusModestus/$repo/hooks \
--method POST \
-f name=web \
-f "config[url]=$HOOK_URL" \
-f "config[content_type]=json" \
-F "events[]=push" \
-F active=true
done