Buildkite

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

对于给定的根目录 package.json

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

以及 turbo.json

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

在您的仓库中创建一个名为 .buildkite/pipeline.yml 的文件,并包含以下内容

.buildkite/pipeline.yml
steps:
  - label: ":test_tube: Test"
    command: |
      pnpm install
      pnpm test
 
  - label: ":hammer: Build"
    command: |
      pnpm install
      pnpm build

创建管道

要在 Buildkite 仪表板中创建您的管道,您需要先从仓库上传管道定义。

  1. 选择 Pipelines 导航到 Buildkite 仪表板。

  2. 选择 New pipeline

  3. 在相应的 NameDescription 字段中输入您的管道详细信息。

  4. Steps 编辑器中,确保有一个从您的仓库上传定义的步骤

.buildkite/pipeline.yml
steps:
  - label: ':pipeline:'
    command: buildkite-agent pipeline upload
  1. 选择 Create Pipeline,然后点击 New Build,然后选择 Create Build

当您进行要验证的更改时,运行管道。

远程缓存

要使用远程缓存,请为您提供商的远程缓存检索团队和令牌。在此示例中,我们将使用 Vercel 远程缓存

  • TURBO_TOKEN - 用于访问远程缓存的 Bearer 令牌
  • TURBO_TEAM - monorepo 所属的账户

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

  1. Vercel Dashboard 中为您的账户创建一个作用域访问令牌。将该值复制到安全的地方。您很快就会用到它。

    Vercel Access Tokens

  2. 获取 您的 Team URL 并复制其值。这两个值将在下一步中使用。

  3. 在 Buildkite 仪表板中,创建两个新的 Buildkite secrets,每个值一个。将它们命名为 TURBO_TOKENTURBO_TEAM

  4. 更新 pipeline.yml 以使用 Buildkite Secrets 插件获取并应用 TURBO_TOKENTURBO_TEAM 作为环境变量,如下所示。(有关其他秘密管理选项,请参阅 Buildkite 文档中的 Managing pipeline secrets。)

    .buildkite/pipeline.yml
    steps:
      - label: ':test_tube: Test'
        command: |
          npm install
          npm test
        plugins:
          - secrets:
              variables:
                TURBO_TOKEN: TURBO_TOKEN
                TURBO_TEAM: TURBO_TEAM
     
      - label: ':hammer: Build'
        command: |
          npm install
          npm run build
        plugins:
          - secrets:
              variables:
                TURBO_TOKEN: TURBO_TOKEN
                TURBO_TEAM: TURBO_TEAM

    提交并推送这些更改到您的仓库,并在下一次管道运行时,秘密将被应用,Vercel Remote Caching 将激活。