# Cloudflare 推出 CI SDK：在 Cloudflare 上为百万级仓库运行 CI/CD 流水线

- 来源：Cloudflare Blog
- 作者：André Venceslau
- 发布时间：2026-08-04 21:00
- AIHOT 分数：61
- AIHOT 标记：精选
- AIHOT 链接：https://aihot.virxact.com/items/cmseq167r12lzro2ecc1f23gs
- 原文链接：https://blog.cloudflare.com/ci-workflows

## 精选理由

将 CI/CD 定义为 Workflow 并用 TypeScript 编写，比 YAML 更灵活，内置的自愈 agent 可自动修复构建错误，适合管理多租户代码的平台。

## AI 摘要

Cloudflare 推出基于 Workflows 和 Sandbox SDK 的 CI SDK，让平台方直接在 Cloudflare 上运行 CI/CD 流水线，支持构建、lint、类型检查、单元测试、依赖缓存及条件部署。

## 正文

我们正在迈向这样一个世界：你可以完全在 Cloudflare 上存储、构建、测试和部署代码。我们通过 Artifacts 构建了第一块拼图，这是一种可扩展到数百万仓库的版本化代码存储。

我们通过构建在 Cloudflare Workflows 之上的 CI SDK，将存储、构建和部署步骤串联在一起，这样你就可以在 Cloudflare 上运行持续集成（CI）流水线。你可以通过 wrangler 配置文件中的新 events 字段，将 artifact 推送事件直接发送到你的 Workflow，从而触发其实例执行——本质上就是一个 CI 任务。

然后，在安装了 @cloudflare/ci 的 Workflow 中，你可以直接：

自动化构建：在安全、隔离的环境中编译来自 Artifacts 仓库的代码

运行 linter 和类型检查：强制执行代码风格、捕获类型错误，并标记任何潜在问题

缓存依赖：运行一次安装，并在 CI 任务的各个步骤之间缓存依赖

执行单元测试：验证代码的每个部分是否按预期工作

自我修复：集成一个 AI 审查智能体，用于捕获构建中出错的步骤，并推送提交进行修复

条件部署：仅当构建步骤成功时，才自动部署你的代码

如今，每个人都在构建平台，无论是内部的 vibe coding 平台，还是通过代码定制来扩展面向客户的产品。平台现在使用 Artifacts 上的数百万个仓库来存储他们的代码、客户的代码，以及对两者进行版本控制。但每个团队对持续集成和部署流水线都有自己的需求。对于平台而言，他们可能希望为自己的代码定义 CI 任务的方式与为客户定义的方式有所不同。

在这些平台上构建的许多终端客户，并不想再为管理自己的持续集成和持续部署（CI/CD）流水线而多费心神。相反，平台可以代为管理客户的构建流程：将 CI/CD 流水线编写一次，并在其客户所构建的所有应用程序之间共享。平台的部分客户可能希望定义自己的 CI；如果是这样，他们可以编写自己的 Workflow，并借助动态工作流，仅在自己的仓库上运行自定义 CI 任务。妙处在于，你无需二选一：平台托管的 CI 和自定义 CI 可以同时运行，且位于同一个命名空间中。

CI/CD 流水线本质上就是一个 Workflow

在今天之前，我们已经拥有了让平台在 Cloudflare 上串联其 CI/CD 流水线所需的全部组件。现在，我们带来了更出色的开发者体验，让这一切变得简单。

CI/CD 流水线——通常借助 GitHub Actions 进行编排——是一系列按特定顺序运行的步骤，其中任何一步失败，都会停止流水线运行并报告错误。从本质上讲，CI/CD 流水线就是一个 Workflow。当 CI/CD 由 YAML 文件定义时，鉴于那些常常导致 YAML 疲劳的各种限制，它很快就会变得复杂。但 CI/CD 流水线中的每一步都可以简单地转化为 Workflow 的 step.do()。你可以不用 YAML，而是用 TypeScript 来定义 CI/CD 流水线，以获得更强的定制性和可配置性。

我们正在 CI SDK 中推出新工具，让你能够在安全、隔离的环境中运行 CI 流水线中的每一步（例如构建、代码检查和类型检查），该环境直接通过 Workflows 和 Sandbox SDK 构建在 Cloudflare 的开发者平台上。此外，你现在可以直接在推送（push）时启动 CI 任务，而无需再配置事件订阅、队列和队列消费者。

此前，你必须直接调用 Sandbox API，并自行管理 CI 流水线中不同步骤之间的状态。现在，SDK 允许你在自己的 Workflow 步骤中运行每条沙箱命令，并利用 Cloudflare Workflows 内置的重试和超时机制。

你还可以通过缓存步骤结果（例如安装步骤）来加速 CI 流水线，这样后续所有操作都无需重新安装。依赖缓存能降低 CI/CD 流水线的延迟，因为每个 CI 步骤都不需要重新执行安装。

要定义你的 CI 任务，你只需要：

为任何依赖项（CI 任务所需的外部包或工具）定义安装步骤，例如打包器（如 esbuild）、代码检查器（如 eslint）或测试运行器（如 vitest）。

为 CI 任务中的每个步骤指定命令（例如 bun run build、bun run test、bun run lint）。依赖缓存后，每个 CI 步骤可以并行执行，从而降低整体运行的延迟。

在部署步骤中传入 wrangler deploy。当 CI 流水线通过时，你的 Worker 将自动部署。

在 Workflow 中编写自己的 CI 流水线，可以让你随心所欲地进行自定义。例如，你可以从 CI Workflow 中调用一个智能体，为 CI 任务赋予自愈能力：如果构建中的某个步骤出错，智能体可以自动修复，并推送一个提交供你审批。

试用 Project Think 中的自愈 CI Workflows 示例：https://github.com/cloudflare/ci/blob/main/examples/self-healing

编写你自己的 CI Workflow

要编写你自己的 CI Workflow，请从 import { CIWorkflow } from@cloudflare/ci 开始。先写一个安装步骤：

下载你的依赖项，包括 CI 步骤所需的任何外部工具或库（例如 vite、react）。

指定你的 lockfile，它用于跟踪依赖项是否发生变化。

通过沙箱快照缓存你的依赖项，以便所有后续步骤都能访问。该快照将存储在你账户的 R2 bucket 中。

然后为构建和检查定义步骤，每个步骤都在各自安全、隔离的沙箱环境中执行。

默认情况下，Workflow 中的每一步都是独立启动的，也就是说，除非另有指定，否则各步骤将并发执行。并行运行每一步可以降低 CI 运行的延迟。为了确保在 CI 流水线继续之前所有检查都已完成（例如，在部署步骤开始之前完成构建、lint、测试和类型检查），请将其包裹在 `Promise.all()` 中：

现在，要真正触发你的 CI Workflow，需要在 Worker 的 wrangler 配置中添加一个 `events` 字段，与你的 Workflow 和 Artifact 绑定放在一起。`events` 字段是 `triggers` 字段中新增的一个字段。

你之前已经可以通过事件订阅，借助 Cloudflare Queues 订阅 Artifacts，并在每次有 push 事件时启动构建流水线。但这需要设置事件订阅、Queue、消费者和队列处理器。现在，你可以直接用该事件来定位 Workflow——每次该事件触发时，都会启动一个 Workflow 实例。

将 CI Workflow 指定为 artifact push 触发器的目标，即可在每次 `cf.artifacts.repo.pushed` 事件发生时自动触发一个 Workflow 实例。每次 CI 运行都会以 Workflow 实例的形式呈现，这样你就可以直接在 Workflows 仪表盘中查看其逐步执行情况和可观测性。这是一项以 Artifacts 为先的集成；不久之后，这些类型将支持来自你 Cloudflare 账户中各种来源的事件，以便在整个产品套件中进行程序化消费。

如果你想在命名空间中的每个仓库上运行 CI Workflow——例如，如果你是一个为所有客户仓库运行 CI 的平台——可以省略 `repoName`，只在 `filter` 中指定命名空间。

要完整配置你的 CI Workflow，需要为驱动流水线的每一块基础设施添加绑定：artifacts、workflows、containers 和 durable_objects（+ exports 配置）绑定（用于访问你的沙箱），以及如果你使用缓存，还需要一个 r2 绑定。R2 绑定是必需的，因为你的安装步骤沙箱快照会存储在一个存储桶中。

自愈式 CI 运行

要让你的 CI 任务实现自我修复，你需要两个组件：大语言模型及其智能体框架。在上面的示例中，我们包含了一个使用 Workers AI 的 Think 智能体，用于捕获流水线中的错误并代表你运行修复。你的 CI 任务可以在远程运行和重新运行——无需一直开着笔记本电脑盯着，也不必每隔几分钟就回来查看一次。相反，Cloudflare 在云端处理这一切，在容器中让修复智能体与 CI 步骤并行运行。你不再需要盯着 CI 任务、手动修复错误并重新运行流水线，只需在智能体完成修复后合并提交即可。

要设置一个能自我修复 CI 流水线的智能体，请为你的 Think 智能体添加一个 Durable Object 绑定：

通过扩展 HealingAgent 类来创建你的 Think 智能体——Healer，该类包含一个 heal 方法供你在失败时调用。传入你希望使用的任何模型：

然后，将你的步骤包裹在 try/catch 块中，当失败时触发修复智能体：

这个示例演示了自我修复的 CI 流水线，但实际上，自带工作流（Bring Your Own Workflow）模式允许你随心所欲地定制 CI 任务。这可以成为添加安全规则、过滤器或条件性 CI 步骤的地方。使用 BYO-W 模式，平台可以根据每个具体用例，为不同团队、客户或应用配置其 CI/CD 流水线。

使用工作流的好处

通过在 Cloudflare Workflow 上运行你的 CI 流水线，你将自动获得：

弹性重试（持久化执行）：如果你的 CI 任务中任何步骤失败，它都会自动重试并保持状态持久化，这意味着不会丢失任何进度。每个步骤都支持自定义重试和超时行为，因此你可以为每个步骤定义不同的失败逻辑。此外，你可以从特定步骤重新开始，例如，如果只是 lint 失败，你就不必重新运行整个 CI 流水线。

Workflows 可观测性：在 Workflows 仪表盘中逐步检查你的 CI 任务，每个实例都会展示各步骤的输入、输出以及墙钟时间和 CPU 时间。你可以通过仪表盘中的 Workflows 图表直观查看 CI 任务，轻松识别哪些步骤是并发运行、哪些是顺序执行的。你还可以通过 Workers Observability 和 GraphQL 检查 Workflows 日志，更深入地了解 CI 任务的运行情况。

代码的力量：通过在 Workflow 中运行 CI，你可以为任何需求编写步骤。例如，你可能希望在 CI/CD 流水线中运行一个 AI 代码审查器。你可以通过 Workflows 的 step.do() 调用你的代码审查智能体——或处理任何你能用代码实现的定制逻辑。其他示例可能包括将构建产物写入 R2，以及在 CI 失败、完成或合并到 main 分支时发送电子邮件。

下一步计划

CI/CD 流水线本质上就是一个 Workflow——借助 CI SDK，你可以用简洁的 TypeScript（而非僵化的 YAML）在代码中定义 CI，无论是你自己的代码还是客户的代码。基于 Cloudflare Workflows 原语，你可以定义任何你想要的逻辑，无论是像我们的 Think 示例那样的自愈智能体，还是将构建产物写入 R2。在 Workflows 上运行 CI 有助于弥合存储（通过 Artifacts）、构建和部署之间的鸿沟。作为一个平台，这让你能够轻松管理自己代码以及代表客户管理的每一步。

申请加入 Artifacts 私有测试版，并通过我们的 Workflows CI 指南开始使用。如果你有任何功能需求或发现任何 bug，欢迎加入 Discord 上的 Cloudflare Developers 社区，直接向 Cloudflare 团队分享你的反馈。

即将推出的功能：

Workers 与 Workers for Platforms 的直接集成：build.preview() 和 build.deploy() 原语，可在推送到 main 分支时自动部署，并在推送到非默认分支时创建预览

渐进式部署：通过 Workflows 管理基于百分比的发布，自定义你的部署推进和回滚逻辑

Monorepos：使用一条 CI 流水线简化多 Worker 部署的管理

触发器：从不同来源发送推送事件，以便在任何版本控制系统（而不仅仅是 Artifacts）上对仓库运行 CI 任务。
