Cloudflare 宣布推出 Forge,这是一个可扩展的开源流水线,可直接从 API 定义生成 SDK 包、命令行工具、文档和库。Forge 在持续集成 CI 环境中运行,可以免费以自托管方式运行,而不必依赖托管的 SaaS 服务。
该项目源于 Cloudflare 管理一个包含超过 3,500 个操作、由数百项服务支持的 API 的需求,这些服务使用 Rust、Go、TypeScript 和 Python 等语言编写。公司表示,Forge 目前会生成 cf CLI 所需的输出,未来几个月还将扩展到 Cloudflare 文档、SDK 包等。
为每项更改提供预览
Forge 在产品团队的代码仓库中运行,检查每项更改,然后创建 CLI 工具、文档和 SDK 包的预览版本,并突出显示由此产生的修改。团队可以在合并 API 更改或向客户发布之前安装并测试这些版本。
这种机制针对的是 API 分布在数百项服务和代码仓库中的环境里存在的实际问题:一次更改可能导致生成过程失败,而受影响的团队直到发布时才发现问题。相较之下,在 CI 中更早运行生成过程,可以将验证移至更接近更改源头的阶段,并减少团队之间所需的协调。
生成相互关联的输出
Forge 并不局限于传统的语言目标。该项目可以获取 OpenAPI 定义并生成 Cap’n Web 等输出。Cap’n Web 是 Cloudflare 的一种 RPC 系统,可以用类似调用本地函数的方式调用远程 TypeScript API。公司还指出,同样的方法可以用于创建 TanStack Query 绑定、Zod 或 Valibot 模式以及 MCP 服务器。
Forge 依赖可串联的转换器,因此可以使用一个输出生成另一个输出。目前它支持 OpenAPI 作为输入类型,同时其设计允许未来加入 AsyncAPI、GraphQL、Cap’n Proto 和 Protobuf。用户还可以指定生成链,而不是被迫采用固定路径;当 CLI 工具使用不同于 SDK 包的语言构建,或工具包含手写命令时,这一点十分重要。
实际会发生什么变化?
Forge 提供了一种模型,使 API 使用工具成为 API 本身开发周期的一部分,而不是之后再单独更新的产品。这对需要保持 SDK、文档和 CLI 同步的团队很有帮助,但并不会消除审查生成输出的必要性,尤其是在工具同时包含生成代码以及手写命令或手写行为时。
Cloudflare 还将该项目与其 API 版本管理计划联系起来。在使用主版本 v4 达十年后,公司表示正在研究一种方法,使其能够发布新的主版本,同时不破坏客户或旧版 SDK 包。公司没有在该材料中公布这一方法的细节或实施时间表。
开放许可证与当前阶段的限制
Forge 现已根据 Apache 2.0 许可证提供,可以免费运行、修改,并在内部或私有环境中使用。Cloudflare 将该项目描述为仍处于早期阶段,尽管它已被用于生成 cf CLI 的输出;公司还承诺稍后提供有关 TypeScript、Rust、Python、Go、PHP 和 Terraform SDK 的更多细节,并特别提到 Terraform 提供商的迁移要求。