CircleCI

以下示例展示了如何将 Turborepo 与 CircleCI 结合使用。

¥The following example shows how to use Turborepo with CircleCI.

TTY on CircleCI

CircleCI 使用交互式终端 (TTY) 导致 Turborepo 的终端 UI 崩溃。要解决此问题,请在 CircleCI 配置中设置 TURBO_UI=false 环境变量。

¥CircleCI uses interactive terminals (TTY) that crash Turborepo's terminal UI. To workaround this, set the TURBO_UI=false environment variable in your CircleCI configuration.

对于给定的根 package.json

¥For a given root package.json:

./package.json
{
  "name": "my-turborepo",
  "scripts": {
    "build": "turbo run build",
    "test": "turbo run test"
  },
  "devDependencies": {
    "turbo": "latest"
  }
}

以及 turbo.json

¥And a turbo.json:

Turborepo logo
./turbo.json
{
  "$schema": "https://turbo.nodejs.cn/schema.json",
  "tasks": {
    "build": {
      "outputs": [".next/**", "!.next/cache/**"],
      "dependsOn": ["^build"]
    },
    "test": {
      "dependsOn": ["^build"]
    }
  }
}

在你的代码库中创建一个名为 .circleci/config.yml 的文件,其中包含以下内容:

¥Create a file called .circleci/config.yml in your repository with the following contents:

.circleci/config.yml
version: 2.1
orbs:
  node: circleci/node@5.0.2
workflows:
  test:
    jobs:
      - test
jobs:
  test:
    docker:
      - image: cimg/node:lts
    steps:
      - checkout
      - node/install-packages
      - run:
        command: npm i -g pnpm
        environment:
          TURBO_UI: "false"
      - run:
        command: pnpm build
        environment:
          TURBO_UI: "false"
      - run:
        command: pnpm test
        environment:
          TURBO_UI: "false"

远程缓存

¥Remote Caching

要使用远程缓存,请检索提供程序的远程缓存的团队和令牌。在本例中,我们将使用 Vercel 远程缓存

¥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 - 用于访问远程缓存的 Bearer 令牌

    ¥TURBO_TOKEN - The Bearer token to access the Remote Cache

  • TURBO_TEAM - monorepo 所属账户

    ¥TURBO_TEAM - The account to which the monorepo belongs

要使用 Vercel 远程缓存,你可以通过以下几个步骤获取以下变量的值:

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

  1. Vercel 仪表板 中为你的账户创建一个作用域访问令牌

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

Vercel Access Tokens

将值复制到安全的地方。你稍后会需要它。

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

  1. 转到 CircleCI 项目设置,然后点击“环境变量”选项卡。创建一个名为 TURBO_TOKEN 的新密钥,并输入你的作用域访问令牌的值。

    ¥Go to your CircleCI project settings and click on the Environment Variables tab. Create a new secret called TURBO_TOKEN and enter the value of your Scoped Access Token.

CircleCI Environment Variables

CircleCI Create Environment Variables

  1. 创建第二个名为 TURBO_TEAM 的 secret,并输入 你的团队 URL

    ¥Make a second secret called TURBO_TEAM and enter your Team URL.

  2. CircleCI 会自动将存储在项目设置中的环境变量加载到 CI 环境中。CI 文件无需修改。

    ¥CircleCI automatically loads environment variables stored in project settings into the CI environment. No modifications are necessary for the CI file.