GitLab CI
Learn how to use GitLab CI with Turborepo.
The following example shows how to use Turborepo with GitLab CI.
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": [".svelte-kit/**"],
"dependsOn": ["^build"]
},
"test": {
"dependsOn": ["^build"]
}
}
}Create a file called .gitlab-ci.yml in your repository with the following contents:
image: node:latest
stages:
- build
build:
stage: build
before_script:
- curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@6.32.2
- pnpm config set store-dir .pnpm-store
script:
- pnpm install
- pnpm build
- pnpm test
cache:
key:
files:
- pnpm-lock.yaml
paths:
- .pnpm-storeFor more information visit the pnpm documentation section on GitLab CI integration, view it here
image: node:latest
stages:
- build
build:
stage: build
script:
- yarn install
- yarn build
- yarn test
cache:
paths:
- node_modules/
- .yarnimage: node:latest
stages:
- build
build:
stage: build
script:
- npm install
- npm run build
- npm run testdefault:
image: oven/bun:1.2
cache:
key:
files:
- bun.lock
paths:
- node_modules/
before_script:
- bun install
build:
script: - bun run build
test:
script: - bun run testRemote 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 GitLab repository settings and click on the Settings and then CI/CD tab. Create a new variable 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.
Remote Caching will now be operational in your GitLab workflows.