Skip to main content

OneDev to Cloudflare Pages

Status: accepted, 20 October 2026; provisioning verification recorded in the shared engineering knowledge base.

The owner changed the requested source of truth from GitHub with a OneDev mirror to OneDev, and the public host from flo.zeitflow.de to chibiburo.com.

OneDev zeitflo-website/main is canonical. A main push runs locked installation, TypeScript, a Docusaurus production build and regression tests, then uploads the static build/ directory to the Cloudflare Pages Direct Upload project chibiburo in the verified ZeitFlow UG account. Native Pages Git integration does not integrate directly with OneDev, so CI uses a dedicated scoped Pages token rather than personal OAuth credentials. No GitHub publishing workflow or reverse pull mirror should overwrite OneDev main.

The token belongs in OneDev project secrets, never Git, command arguments or printed logs; it is injected only into the final publish step. The account-level Pages Edit permission is broader than one Pages project, a Cloudflare permission boundary that the operator must consider when rotating/revoking it. No DNS or unrelated-service permissions are required. Untrusted branches must not receive this secret.

Each deployment carries its source commit. Before publication, the deployment script validates the expected account and full commit hash. Failure in any check prevents publication. Pages deployment history supports rollback without editing the source branch. No SSH or application/database configuration is involved.

The apex domain is attached through Pages custom domains in the existing Cloudflare zone. Domain registration and nameserver ownership are separate; do not modify another zone or the corporate site to resolve missing access. The website metadata, sitemap and privacy notice use the canonical host.

Source details: repository README.md, .onedev-buildspec.yml, wrangler.jsonc and scripts/deploy-pages.sh. Historical GitHub-first ADR is superseded in AFFiNE.