Release Process — Internal
littlebig-core Workers
Section titled “littlebig-core Workers”Prerequisites
Section titled “Prerequisites”wranglerCLI authenticated (bunx wrangler whoami)- D1 database IDs set in both
wrangler.tomlfiles - Secrets set via
wrangler secret put(ADMIN_TOKEN, ANTHROPIC_API_KEY, X402_WALLET_ADDRESS)
Deploy license-server
Section titled “Deploy license-server”Typecheck and test first, and deploy only if both pass (do not chain them with a pipe, which hides the exit code):
cd ~/Development/littlebig-core/packages/license-serverexport CLOUDFLARE_ACCOUNT_ID=24c012a99395420605c00d2a39896dd0bunx tsc --noEmit && bun test && bunx wrangler deployThe Paddle webhook tests start a local Worker and create their own local Secrets Store entries; CLOUDFLARE_ACCOUNT_ID must be set.
Deploy the other Workers
Section titled “Deploy the other Workers”| Worker | Directory | Command |
|---|---|---|
| Product Admin (products.andredaus.com) | ~/Development/littlebig-products-admin |
bunx wrangler deploy |
| Auth server | ~/Development/littlebig-auth/packages/auth-server |
bunx wrangler deploy |
| CMS (cms.littlebig.co) | ~/Development/littlebig-cms |
bun run build && bunx wrangler deploy |
| Website | ~/Development/littlebig-co |
pushing to main deploys it (Workers Builds) |
All of them need CLOUDFLARE_ACCOUNT_ID=24c012a99395420605c00d2a39896dd0.
Deploy wp-luminary-proxy
Section titled “Deploy wp-luminary-proxy”cd ~/Development/littlebig-core/packages/wp-luminary-proxybunx wrangler deployRun D1 migrations (license database)
Section titled “Run D1 migrations (license database)”There is no migration-tracking table: files are applied by hand, in numeric order, with --remote. Check the next free number first (ls schema/migrations) and never reuse one. Migrations 0018 and later are purely additive (new columns with defaults, new tables), so they are safe to apply before deploying the code that uses them.
cd ~/Development/littlebig-core/packages/license-serverbunx wrangler d1 execute littlebig-licenses --remote --file ../../schema/migrations/00NN_name.sqlThe original two for a fresh database:
Run from within the worker package that owns the binding:
cd ~/Development/littlebig-core/packages/license-serverbunx wrangler d1 execute littlebig-licenses --file=../../schema/migrations/0001_initial.sqlbunx wrangler d1 execute littlebig-licenses --file=../../schema/migrations/0002_threat_intel.sqlCheck deployment
Section titled “Check deployment”curl https://license.littlebig.co/healthcurl https://littlebig-wp-luminary-proxy.andredaus.workers.dev/healthDocs site (littlebig-docs)
Section titled “Docs site (littlebig-docs)”CI/CD (automatic on push to main)
Section titled “CI/CD (automatic on push to main)”GitLab CI runs:
bun installbun run buildbunx wrangler pages deploy dist --project-name littlebig-docs
Required GitLab CI/CD variables (group-level):
CLOUDFLARE_API_TOKEN— CF API token with Pages:Edit permissionCLOUDFLARE_ACCOUNT_ID—24c012a99395420605c00d2a39896dd0
Manual deploy
Section titled “Manual deploy”cd ~/Development/littlebig-docsbun installbun run buildCLOUDFLARE_ACCOUNT_ID=24c012a99395420605c00d2a39896dd0 bunx wrangler pages deploy dist --project-name littlebig-docsCloudflare Access setup for /internal/*
Section titled “Cloudflare Access setup for /internal/*”One-time setup in the CF Zero Trust dashboard. Does not require any code changes.
- Log in at one.dash.cloudflare.com → Zero Trust → Access → Applications.
- Click Add an Application → Self-hosted.
- Application name: LittleBig Docs Internal
- Application domain:
docs.littlebig.co— Path:/internal
(CF Access matches/internalas a path prefix — covers/internal/*) - Session duration: 24h
- Identity providers: Email OTP (or any IdP you’ve configured)
- Policy: Allow — Email →
andre@littlebig.co - Save.
After setup, docs.littlebig.co/internal/* requires an authenticated Cloudflare Access session. Public routes are unaffected.
WordPress plugin releases
Section titled “WordPress plugin releases”Each plugin uses GitLab CI to build and push ZIPs to Cloudflare R2. The license-server /v1/update/:slug endpoint serves signed R2 URLs for Plugin Update Checker (PUC) compatibility.
Register a new plugin version
Section titled “Register a new plugin version”# After CI has pushed the ZIP to R2:curl -X POST https://littlebig-license-server.andredaus.workers.dev/v1/admin/versions \ -H "Authorization: Bearer {ADMIN_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "product_id": "prod-wpl-01", "version": "1.3.0", "zip_key": "wp-luminary/wp-luminary-1.3.0.zip", "changelog": "Silver tier and threat telemetry.", "min_wp": "6.4", "min_php": "8.2", "tested_wp": "6.7", "released_at": "2026-06-30T00:00:00Z" }'