Operations
CI and releases
What runs on every push to a pull request, and how a version is cut.
CI
bun install --frozen-lockfile- Map
ghost.testto 127.0.0.1 and allow binding port 443, for theghsuite turbo run check-types --filter=@ghost/api(builds the workspace packages it imports)- Unit tests, then end-to-end tests, against Postgres and RustFS service containers, with
--no-file-parallelism - Upload the
gh-captureartifact - Fail if
apps/api/github.schema.gqlchanged (it must be committed current) - For
apps/delivery: migrate a database,go vet,go test
.github/workflows/self-host-e2e.yml boots the self-hosting stack and tests it.
Locally, the root bun run lint runs scripts/check-standards.ts (concatenated strings, wrapped comments, non-services under services/, error classes outside lib/, any, several components in a page, fallback={null}) and each app's linter. CodeRabbit reviews pull requests on GitHub.
Versions
bun scripts/bump-version.ts <major|minor|patch|x.y.z>sets one version on the root and every apps/* package, so a single tag names a release. The web app has a changelog page under app/changelog.