apps/docs/content/docs/guides/ci-vendors/circleci.mdx
The following example shows how to use Turborepo with CircleCI.
<Callout type="warn" title="TTY on CircleCI"> CircleCI [uses interactive terminals (TTY)](https://discuss.circleci.com/t/reprise-allow-for-using-circle-ci-tooling-without-a-tty/23309) that crash Turborepo's terminal UI. To workaround this, set the `TURBO_UI=false` environment variable in your CircleCI configuration. </Callout>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:
```yaml title=".circleci/config.yml"
version: 2.1
orbs:
node: circleci/[email protected]
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"
```
```yaml title=".circleci/config.yml"
version: 2.1
orbs:
node: circleci/[email protected]
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"
```
```yaml title=".circleci/config.yml"
version: 2.1
orbs:
node: circleci/[email protected]
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"
```
```yaml title=".circleci/config.yml"
version: 2.1
orbs:
node: circleci/[email protected]
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"
```
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 withTo use Vercel Remote Caching, you can get the value of these variables in a few steps:
Copy the value to a safe place. You'll need it in a moment.
TURBO_TOKEN and enter the value of your Scoped Access Token.
Make a second secret called TURBO_TEAM and set it to your team slug - the part after vercel.com/ in your Team URL. For example, the slug for vercel.com/acme is acme.
CircleCI automatically loads environment variables stored in project settings into the CI environment. No modifications are necessary for the CI file.