How Turbo CI works
When a pull request is opened, your CI provider triggers a Turbo CI schedule in Paradime, which runs your configured dbt™ command against the changed models. Models build into a temporary schema using the prefixparadime_turbo_ci_pr_ followed by the pull request number (for example, paradime_turbo_ci_pr_123), so you can inspect the results of your changes in your warehouse.
A model counts as changed when its file differs from the manifest of the schedule you defer to, so a branch that is behind your default branch can also build models it didn’t touch. See the Turbo CI FAQ.
Prerequisites
Turbo CI runs in its own Bolt environment, so CI builds use a separate warehouse connection and target from your production runs:- Create a CI environment. In Settings > Environments, click New environment and create one for CI (for example,
CI). See Create and manage environments. - Add a connection to it. Attach a warehouse connection to the CI environment with its target name set to
ci. See the Bolt environment setup guide for your data warehouse. - Point the Turbo CI schedule at it. Set the schedule’s Environment to the CI environment in schedule settings, or set
environment: <ci-environment-slug>in the schedule’s YAML.
Already running Turbo CI with --target ci?
Follow the migration guide to move to a dedicated CI environment and drop the
--target ci flags from your commands.Configure a custom schema for CI runs
Update your dbt™generate_schema_name.sql macro so that, when a Bolt run uses the ci target, models build into a temporary schema with the paradime_turbo_ci_pr prefix. In your project’s macros folder, create generate_schema_name.sql:
Configure the Turbo CI job
A Turbo CI job is a Bolt schedule with a few additions:- Its environment set to your CI environment, so runs use the CI connection and
citarget. - A production schedule to defer to, so state comparison can determine what changed.
commandsthat use thestate:modified+selector to build and test only new and changed models.- A trigger set to run when a pull request is opened.