在cloudflare workers平台上集成的 CI/CD 构建 --- Workers Builds: integrated CI/CD built on the Workers platform
思考
cloudflare 的pages 在推出最初是为了托管静态页面和基于js框架的生成物,所以为了前端工程师方便,提供了基于github的提交->触发build->deploy的流程。随着cf将 workers 和pages统一的目标,那么就需要有很多工程上的事情要落实,比如,在workers中增加了asset ,并让workers也能支持 github的提交->触发build->deploy
这就让cloudflare 要把原来的工作流迁移过来,并且,要启动更多的容器化服务,不过这都是原来都有的,现在他们要做的事情是让更多的cf生态能在build的时候能融合进来,包括域名的解析,r2 kv 和workers的绑定,这些都可以自动化。
我们在wrangler 敲入的各种命令,实际上是在执行wrangler 的一个node 的typescript 的函数,凡是能wrangler 命令能操作的内容,都可以通过api 进行云化。
目前已知的的构建平台是ubuntu 22.
支持的脚本语言有
目前公测期间,不限制build总时间,单次build的时间为20分钟。
之后收费的时候。每个月免费账号3000分钟,付费账号6000分钟,并且每分钟的价格也可以很便宜。
我真有点觉得,如果把这个构建服务单独拆出来而不是作为github 触发,估计会更有意思。至少私有git ,bitbucket 也能使用的上了。
赛博菩萨再次出手。瞧好瞧好。
总结
Cloudflare 推出了 Workers Builds,这是一个集成的 CI/CD 工作流程,它利用 Workers 和 Durable Objects 等技术,使得开发者能够自动化地构建和部署应用程序到 Cloudflare Workers 平台。
摘要
在 2024 年的生日周,Cloudflare 发布了 Workers Builds 的公开测试版,这是一个基于 Cloudflare Workers 平台的集成 CI/CD 解决方案。该系统允许开发者将 GitHub 或 GitLab 仓库连接到 Workers,自动构建和部署代码更改。Workers Builds 的设计旨在弥合 Workers 和 Pages 之间的开发体验差距,并且引入了 Pages 中的最佳功能——与现有的 GitHub 和 GitLab 开发工作流程的紧密集成,同时减少了开发者的负担。
Cloudflare 使用 Workers、Durable Objects、Hyperdrive、Workers Logs 和 Smart Placement 等技术构建了 Workers Builds 系统。该系统包括一个配置平面,用于连接 Workers 和仓库,以及一个构建管理系统,用于运行和监控构建过程。构建管理系统由两个 Durable Objects 类组成:Scheduler DO 和 Build Buddy DO。Scheduler DO 负责调度待执行的构建任务,而 Build Buddy DO 管理单个构建的整个生命周期,包括构建的初始化、执行、状态跟踪和日志存储。
Workers Builds 还利用了 Cloudflare 开发者平台的其他功能,如 Smart Placement 和 location hints 减少了延迟,Workers Logs 提供了日志聚合和搜索功能,R2 将用于构建缓存,以及 Vitest 和 workerd 用于测试。此外,JavaScript-native RPC 简化了 Workers 之间的通信。
最后,Cloudflare 强调了通过 Workers Builds 构建复杂应用程序的可能性,并表示自己作为内部用户,通过亲身体验和改进开发者体验,为全球开发者社区提供了更多高效的工具。
观点
Workers Builds 是一个集成的 CI/CD 解决方案,它简化了开发者将代码从 GitHub 或 GitLab 自动构建和部署到 Workers 平台的过程。
Workers Builds 的设计目标是为了提供与 Cloudflare Pages 相似的开发体验,并且利用了 Pages 中的最佳特性,即与 GitHub 和 GitLab 的紧密集成。
通过使用 Workers 和 Durable Objects,Cloudflare 构建了一个分布式系统,该系统能够有效地管理和执行构建任务,同时保持了高度的可靠性和可扩展性。
Smart Placement 和 location hints 的使用有助于减少请求的往返时间,从而降低了延迟成本。
Workers Logs 提供了一个强大的日志工具,它允许开发者聚合和搜索操作日志,以便更快地识别和解决问题。
R2 存储将被用于构建缓存,以加速后续构建过程,通过避免重新下载依赖和重建项目,提高了构建效率。
通过 Vitest 和 workerd,Cloudflare 能够进行单元测试和跨 Workers 的集成测试,确保代码更改在生产环境中能够按预期工作。
JavaScript-native RPC 的引入使得 Workers 之间的方法调用变得更加简单和直接,减少了样板代码的需求。
Cloudflare 通过在自己的平台上构建应用程序,成为了自己产品的“零号客户”,这有助于直接了解产品的痛点,并不断改进产品以满足开发者的需求。
Workers Builds 的发布扩展了 Cloudflare 开发者平台的能力,使得开发者能够更专注于编写代码,而不是配置。