Cloudflare объявила о Forge — конвейере с открытым исходным кодом и возможностью расширения для непосредственной генерации пакетов SDK, инструментов командной строки, документации и библиотек из определений интерфейсов программирования. Forge работает внутри сред непрерывной интеграции CI и может запускаться бесплатно и самостоятельно, без зависимости от размещаемого сервиса SaaS.
Проект появился в ответ на потребность Cloudflare управлять API, включающим более 3 500 операций и поддерживаемым сотнями сервисов, написанных на языках, включая Rust, Go, TypeScript и Python. Компания утверждает, что в настоящее время Forge генерирует необходимые выходные данные для инструмента cf CLI, а в ближайшие месяцы его использование будет распространено на документацию Cloudflare, пакеты SDK и другие компоненты.
Предварительные версии для каждого изменения
Forge работает внутри репозиториев продуктовых команд, проверяя каждое изменение и создавая предварительные версии инструмента CLI, документации и пакетов SDK с выделением вызванных им изменений. Команды могут устанавливать эти версии и тестировать их до слияния изменения API или его выпуска для клиентов.
Этот механизм нацелен на практическую проблему сред, в которых API распределён между сотнями сервисов и репозиториев: одно изменение может привести к сбою процесса генерации, а затронутая команда обнаружит проблему только при выпуске. Запуск генерации на раннем этапе внутри CI переносит проверку ближе к источнику изменения и сокращает необходимую координацию между командами.
Генерация связанных выходных данных
Forge не ограничивается традиционными языковыми целями. Проект способен принимать определение OpenAPI и генерировать такие выходные данные, как Cap’n Web — систему RPC от Cloudflare, которая позволяет вызывать удалённые интерфейсы TypeScript способом, напоминающим вызов локальных функций. Компания также указывает на возможность использовать тот же подход для создания привязок TanStack Query, схем Zod или Valibot и серверов MCP.
Forge использует соединяемые адаптеры, благодаря чему один выходной результат можно применять для создания другого. В настоящее время поддерживается OpenAPI как тип входных данных, при этом архитектура предусматривает добавление в будущем AsyncAPI, GraphQL, Cap’n Proto и Protobuf. Пользователь также может определить цепочку генерации вместо применения фиксированного пути, что важно, когда инструмент CLI написан на языке, отличном от языка пакета SDK, или когда инструмент содержит написанные вручную команды.
Что меняется на практике?
Forge предлагает модель, в которой инструменты потребления API становятся частью самого цикла разработки интерфейса, а не отдельными продуктами, обновляемыми позднее. Это помогает командам, которым необходимо поддерживать синхронизацию SDK, документации и CLI, однако не устраняет необходимость проверять сгенерированные выходные данные, особенно когда инструмент сочетает сгенерированный код с написанными вручную командами или вариантами поведения.
Cloudflare также связывает проект со своими планами по управлению версиями API. После десятилетия использования основной версии v4 компания заявляет, что работает над подходом, который позволит выпускать новые основные версии без поломки клиентов или старых пакетов SDK. В материале не раскрываются подробности этого подхода или график его внедрения.
Открытая лицензия и ограничения текущего этапа
Forge стал доступен по лицензии Apache 2.0; его можно запускать, изменять и использовать внутри компании или в частном порядке без платы. Cloudflare описывает проект как находящийся на раннем этапе, несмотря на его использование для генерации выходных данных cf CLI, а также обещает позднее представить подробности о SDK для TypeScript, Rust, Python, Go и PHP, а также для Terraform, уделив особое внимание требованиям перехода в провайдере Terraform.