GitHub Actions
The following example shows how to use Turborepo with GitHub Actions.
For a given root package.json
:
And a turbo.json
:
Create a 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 CacheTURBO_TEAM
- The account to which the monorepo belongs
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.
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 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.
Create a new repository variable (click the Variables tab) called TURBO_TEAM
and enter the value of your team's Vercel URL without the vercel.com/
.
Using a repository variable rather than a secret will keep GitHub Actions from censoring your team name in log output.
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
At the top of your GitHub Actions workflow, provide the following environment variables to jobs that use turbo
:
Caching with GitHub actions/cache
The following steps exemplify how you could use actions/cache to cache your monorepo artifacts on GitHub.
Supply a package.json script that will run tasks using Turbo.
Example package.json
with a build
script:
Configure your GitHub pipeline with a step which utilizes the actions/cache@v4
action before the build steps of your CI file.
- Make sure that the
path
attribute set within theactions/cache
action matches the output location above. In the example below,path
was set to.turbo
. - State the cache key for the current run under the
key
attribute. In the example below, we used a combination of the runner os and GitHub sha as the cache key. - State the desired cache prefix pattern under the
restore-keys
attribute. Make sure this pattern will remain valid for future ci runs. In the example below, we used the${{ runner.os }}-turbo-
as the cache key prefix pattern to search against. This allows us to hit the cache on any subsequent ci runs despitegithub.sha
changing.
Example ci
yaml with .turbo
as chosen cache folder:
Was this helpful?