Deploy#
Push to main. Once CI passes, Cabotage (the
guild’s deploy platform, built on Kubernetes) builds the Docker image, runs the database
migrations, then starts the new version. The whole deploy takes about 13 minutes.
Two things to know:
Only app changes deploy. A push deploys only if its newest commit changes an app file. A commit that touches only
.github/or docs deploys nothing, even if an earlier, undeployed commit underneath it changed app code.Old and new code run together. For about a minute, the previous version keeps serving traffic while the new one starts, and the migration runs first. See How it works for what that means for a migration.
Settings#
Settings are passed as environment variables, grouped by prefix: API_ for the API itself,
DB_ for the database, and WEB_ for the site and sign-in. The repo’s .env.example lists
every one with what it’s for; never put a real value in a doc or a commit.
After a deploy#
The Deployed GitHub Actions workflow runs once the new version is live: it clears Cloudflare’s
cache (so visitors don’t keep seeing the old build’s files) and runs the browser tests against
the live site.
gh run list --workflow deployed.yml
Each deploy starts two or three runs that skip themselves; look for the one that actually ran.