StatusPage — Development & Deployment
Het project staat in Portals/StatusPage.Worker/. Vereisten: Node.js 20+, pnpm 9+, Wrangler CLI.
Lokale omgeving opzetten
1. Dependencies installeren
2. Lokale secrets instellen
Maak een bestand .dev.vars in Portals/StatusPage.Worker/ aan. Dit bestand staat in .gitignore en mag nooit worden gecommit.
3. Lokale D1-database aanmaken en migraties applyen
4. Seed-data laden (optioneel)
Lokaal draaien
Er zijn twee modi:
Vite dev server (port 5173) — aanbevolen voor UI-ontwikkeling
Snelle hot-module-replacement voor Svelte-componenten. Cron triggers zijn niet beschikbaar. Gebruikt Wrangler-miniflare onder de motorkap voor D1/KV-bindings.
Wrangler dev server (port 8787) — voor cron-testen
Simuleert de volledige Worker-runtime inclusief cron triggers. Een cron handmatig triggeren:
Of gebruik de Rider run-configuratie .run/StatusPage Worker - Trigger cron now.run.xml.
Rider run-configuraties
In .run/ staan kant-en-klare run-configuraties:
Configuratie | Actie |
|---|---|
| Vite dev server |
| Wrangler dev server |
| Productie-build |
| Lokale migraties applyen |
| Cron handmatig activeren (vereist draaiende Wrangler dev) |
| TypeScript type-check zonder build |
Build-keten
De productie-build bestaat uit vier stappen:
pnpm run build voert vite build uit, gevolgd door het postbuild-script als NPM postbuild-hook. Daarna is src/main.ts de gegenereerde wrapper met fetch + scheduled().
Handmatig deployen
Vóór deployment: zorg dat D1-migraties zijn toegepast (zie CI-workflow hieronder).
CI-workflow
De GitHub Actions workflow in .github/workflows/Deployment-StatusPage-Worker.yml wordt getriggerd door:
Push naar
developofmainmet wijzigingen inPortals/StatusPage.Worker/**Handmatige workflow_dispatch (kies
developmentofproduction)
Stappen
pnpm install (frozen lockfile)
TypeScript type-check (
pnpm run check)Tests (
pnpm run test)SvelteKit build (
pnpm run build)D1-migraties applyen — remote productie of development
Wrangler deploy
Omgevingsbepaling
Branch / trigger | Omgeving |
|---|---|
Push naar |
|
Push naar |
|
| Keuze via input |
Benodigde GitHub Secrets
Secret | Beschrijving |
|---|---|
| Wrangler API-token met deploy-rechten |
| Cloudflare account-ID |
Worker-secrets (AZURE_AD_CLIENT_SECRET, TWILIO_*, API_AUDIENCE) zijn geconfigureerd in Cloudflare via wrangler secret put en staan niet in GitHub Secrets.
Worker-secrets beheren
Secrets zijn opgeslagen in Cloudflare en worden nooit via wrangler.jsonc of CI meegegeven. Instellen of roteren:
Overzicht secrets
Secret | Beschrijving |
|---|---|
| Entra ID client secret voor OIDC-login en token-acquisitie |
| Twilio account-ID (WhatsApp) |
| Twilio auth-token (WhatsApp) |
| Entra App ID URI van AutoMate.API (bijv. |
Custom domain en DNS cutover
Het custom domain status.automate365.cloud is als custom_domain: true geconfigureerd in wrangler.jsonc. Bij de eerste deploy vervangt Wrangler automatisch een eventueel bestaand DNS-record (bijv. de Railway A/CNAME) door een proxied CNAME naar de Worker. Universal SSL is automatisch beschikbaar.
Als de DNS-cutover onsuccesvol is, check dan in het Cloudflare-dashboard of het record al proxied is (oranged).