Docs
//
GitHub Actions

Using Turborepo with GitHub Actions

The following example shows how to use Turborepo with GitHub Actions.

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",
  "baseBranch": "origin/main",
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": []
    },
    "test": {
      "dependsOn": ["^build"],
      "outputs": []
    },
  }
}

Create file called .github/workflows/ci.yml in your repository with the following contents:

Remote Caching

To use Remote Caching with GitHub Actions, add the following environment variables to your GitHub Actions workflow to make them available to your turbo commands.

  • 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 GitHub repository settings and click on the Secrets and then Actions tab. Create a new secret called TURBO_TOKEN and enter the value of your Scoped Access Token.

GitHub Secrets GitHub Secrets Create

  1. Make a second secret called TURBO_TEAM and enter the value of your team's Vercel URL (or if you're on Hobby, your personal URL works as well). Do not include the https://vercel.com/ part, only the slug.

Vercel Account Slug

  1. At the top of your GitHub Actions workflow, provide the following environment variables to jobs that use turbo:
# ...

jobs:
  build:
      name: Build and Test
      timeout-minutes: 15
      runs-on: ${{ matrix.os }}
      # To use Turborepo Remote Caching, set the following environment variables for the job.
      env:
        TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
        TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
      strategy:
        matrix:
          os: [ubuntu-latest, macos-latest]

      steps:
        - name: Check out code
          uses: actions/checkout@v2
          with:
            fetch-depth: 2
      # ...
Last updated on May 18, 2022