Docs
GitLab CI

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://turborepo.org/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
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:
    - yarn install
    - yarn build
    - yarn test
  cache:
    paths:
      - node_modules/
      - .yarn
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
  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: "$CI_COMMIT_REF_SLUG"
    paths:
      - .pnpm-store

For more information visit the pnpm documenation section on GitLab CI integration, view it here

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

Last updated on August 12, 2022