CircleCI
Learn how to use CircleCI with Turborepo.
The following example shows how to use Turborepo with CircleCI.
TTY on CircleCI
CircleCI uses interactive terminals
(TTY)
that crash Turborepo's terminal UI. To workaround this, set the
TURBO_UI=false environment variable in your CircleCI configuration.
For a given root package.json:
{
"name": "my-turborepo",
"scripts": {
"build": "turbo run build",
"test": "turbo run test"
},
"devDependencies": {
"turbo": "latest"
}
}And a turbo.json:
{
"$schema": "https://turborepo.dev/schema.json",
"tasks": {
"build": {
"outputs": [".next/**", "!.next/cache/**"],
"dependsOn": ["^build"]
},
"test": {
"dependsOn": ["^build"]
}
}
}Create a file called .circleci/config.yml in your repository with the following contents:
version: 2.1
orbs:
node: circleci/node@5.0.2
workflows:
test:
jobs:
- test
jobs:
test:
docker:
- image: cimg/node:lts
steps:
- checkout
- node/install-packages
- run:
command: npm i -g pnpm
environment:
TURBO_UI: "false"
- run:
command: pnpm build
environment:
TURBO_UI: "false"
- run:
command: pnpm test
environment:
TURBO_UI: "false"version: 2.1
orbs:
node: circleci/node@5.0.2
workflows:
test:
jobs:
- test
jobs:
test:
docker:
- image: cimg/node:lts
steps:
- checkout
- node/install-packages:
pkg-manager: yarn
- run:
command: yarn build
environment:
TURBO_UI: "false"
- run:
command: yarn test
environment:
TURBO_UI: "false"version: 2.1
orbs:
node: circleci/node@5.0.2
workflows:
test:
jobs:
- test
jobs:
test:
docker:
- image: cimg/node:lts
steps:
- checkout
- node/install-packages
- run:
command: npm run build
environment:
TURBO_UI: "false"
- run:
command: npm run test
environment:
TURBO_UI: "false"version: 2.1
orbs:
node: circleci/node@5.0.2
workflows:
test:
jobs:
- test
jobs:
test:
docker:
- image: cimg/node:lts
steps:
- checkout
- node/install-packages
- run:
command: npm i -g bun
environment:
TURBO_UI: "false"
- run:
command: bun run build
environment:
TURBO_UI: "false"
- run:
command: bun run test
environment:
TURBO_UI: "false"Remote Caching
To use Remote Caching, retrieve the team and token for the Remote Cache for your provider. In this example, we'll use Vercel Remote Cache:
TURBO_TOKEN- The Bearer token to access the Remote CacheTURBO_TEAM- The slug of the Vercel team to share the artifacts with
To use Vercel Remote Caching, you can get the value of these variables in a few steps:
- Create a Scoped Access Token to your account in the Vercel Dashboard

Copy the value to a safe place. You'll need it in a moment.
- Go to your CircleCI project settings and click on the Environment Variables tab. Create a new secret called
TURBO_TOKENand enter the value of your Scoped Access Token.

-
Make a second secret called
TURBO_TEAMand set it to your team slug - the part aftervercel.com/in your Team URL. For example, the slug forvercel.com/acmeisacme. -
CircleCI automatically loads environment variables stored in project settings into the CI environment. No modifications are necessary for the CI file.