SuperAPI AI 工具集

learn-alchemy

部署与运维

查看项目

更新于 10-15 23:33

技能介绍

用途:说明 Alchemy 2 如何把 Effect 程序转换成计划好的 Cloudflare 部署。Alchemy 2 通过 Effect 程序声明并部署云资源,Effect 用类型化失败与依赖描述工作;一个程序可同时声明资源、绑定、部署状态和使用它们的 Worker。

主要概念:服务是某项工作的命名接口,Layer 构建服务并提供构造依赖,contract 定义动作的名称、输入、输出、失败与元数据。Stack 组合一个基础设施程序及其输出;Provider 提供云 API 实现;State 记录 Stack 已拥有的资源;Resource 是声明的云对象(如 Zone、DNS 记录、DNSSEC 设置、Worker);Binding 是附加到 Worker 的类型化运行时值;Plan 在 Provider 改动前显示声明资源与已存部署状态的差异;Stage 命名隔离的部署状态;Profile 保存 Alchemy CLI 的 Provider 凭据;adopt(true) 表示显式接管已有资源;Dev 用 ALCHEMY_DEV=true 在本地 workerd 执行。

用法:脚本位于 apps/infra/package.json,包含 pnpm infra:plan、pnpm infra:deploy、pnpm infra:dev、pnpm infra:destroy。应先运行 plan,查看 create、update、adopt、noop 动作,再批准部署;生产环境传入 --stage prod,未指定 stage 的部署默认使用 live_$USER,可能创建第二个 Worker。

限制:锁定的 Alchemy 为 beta 版本,API 可能漂移;Cloudflare API 变更曾破坏发布。Cloudflare 在部署时拒绝字符串形式的 rate-limit namespace ID,需用数字 ID。adopt(true) 才允许接管已有 Zone,且不应假设资源可安全销毁。pnpm typecheck 变红不会阻止 Alchemy 生成部署计划或打包,应先运行 pnpm turbo run check test build 并检查失败任务,不要用部署绕过红灯。凭据应放在 Profile 中,不要写入 .env、源文件或 Worker 绑定。本资料未提供收费与价格信息。