Using Turborepo with GitLab CI

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": "1.2.5"
  }
}

And a turbo.json:

{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": []
    },
    "test": {
      "dependsOn": ["^build"],
      "outputs": []
    },
  }
}

Create a file called .gitlab-ci.yml in your repository with the following contents:

image: node:latest
# To use Remote Caching, uncomment the next lines and follow the steps below.
# variables:
#   TURBO_TOKEN: $TURBO_TOKEN
#   TURBO_TEAM: $TURBO_TEAM
stages:
  - build
build:
  stage: build
  script:
    - npm install
    - npm run build
    - npm run test

Remote Caching

To use Remote Caching with GitLab CI, add the following environment variables to your GitLab CI project.

  • TURBO_TOKEN - The Bearer token to access the Remote Cache
  • TURBO_TEAM - The account to which the monorepo belongs

To use Vercel Remote Caching, you can get the value of these variables in a few steps:

  1. Create a Scoped Access Token to your account in the Vercel Dashboard

Vercel Access Tokens Vercel Access Tokens

Copy the value to a safe place. You'll need it in a moment.

  1. Go to your GitLab repository settings and click on the Settings and then CI/CD tab. Create a new variable called TURBO_TOKEN and enter the value of your Scoped Access Token.

GitLab CI Variables GitLab CI Create Variable

  1. Make a second secret called TURBO_TEAM and enter the value of your team's Vercel URL without the vercel.com/. Your Team URL can be found inside your team's general project settings from the dashboard.

    If you're using a Hobby Plan, you can use your username. Your username can be found in your Vercel Personal Account Settings

Vercel Account Slug