跳转到主要内容

概览

insforge.toml 是项目配置子集的声明性版本控制快照:身份验证策略、允许的重定向 URL、密码规则、SMTP、存储上传大小、实时和计划保留以及部署子域。CLI 提供针对此文件的三个命令:
  • config plan:将 insforge.toml 与链接项目进行比较。显示会发生什么变化。
  • config apply:将差异推送到实时项目。按更改能力门控、环境解析的秘密、干运行模式。
  • config export:拉取当前项目状态并写新的 insforge.toml。对从现有项目引导很有用。
您在存储库中保留一个 insforge.toml。要将其应用于不同环境(暂存、生产、队友的本地后端或自托管实例),请将 CLI 指向不同的项目(重新链接或使用 --project-id)。秘密通过 env(...) 引用从环境变量读取,所以文件本身保持免费的凭证并可以安全提交。 这在 InsForge Cloud 项目和自托管 OSS 部署上的工作方式相同。
所有示例使用 npx @insforge/cli。不要全局安装 CLI。

命令摘要

命令目的
config plan显示 insforge.toml 和实时项目状态之间的差异
config applyinsforge.toml 应用于实时项目
config apply --dry-run打印计划而不应用
config apply --auto-approve跳过交互式确认提示(在 --json 模式下需要)
config export拉取实时配置并写 insforge.toml
config export --force不确认覆盖现有 insforge.toml
config planconfig apply 读取 insforge.toml;如果它存在于其他位置,通过 --file <path>config export 写入文件;通过 --out <path> 将其写入自定义位置。

推荐工作流程

1

从现有项目引导

如果您已通过仪表板配置项目,导出一次以获得工作文件:
这写 insforge.toml 反映当前后端状态。
2

提交它

检查 insforge.toml 进入版本控制。秘密通过 env(...) 引用,所以文件很安全。
3

编辑和计划

更改 TOML,然后在应用前预览差异:
4

应用

审查呈现的计划并确认。在 CI 中,通过 --auto-approve--json
5

在其他地方应用相同的文件

要将相同的配置推送到暂存或自托管后端,请将 CLI 指向其他项目并重新运行应用:
在本地 shell 中因环境解析的不同秘密(SMTP 密码等),所以 TOML 不需要更改。

insforge.toml 覆盖什么

该文件镜像项目配置的精选子集,对于以声明方式管理有用的部分。任何不在此列表中的内容仍存在于仪表板和 API 上。
部分
[auth]allowed_redirect_urls, require_email_verification, verify_email_method, reset_password_method, disable_signup
[auth.password]min_length, require_number, require_lowercase, require_uppercase, require_special_char
[auth.smtp]enabled, host, port, username, password, sender_email, sender_name, min_interval_seconds
[storage]max_file_size_mb
[realtime]retention_days
[schedules]retention_days
[deployments]subdomain
因为 TOML 没有 null 文本,使用 retention_days = 0 禁用实时消息或计划执行日志的保留清理;config apply 为该值向后端发送 null。电子邮件模板、OAuth 提供商应用凭证、存储桶、实时通道、函数、部署环境变量和秘密不通过此文件管理。 完整示例:

config plan

plan 读取 insforge.toml,通过 /api/metadata 和存储、实时和计划的可选配置端点获取实时状态,然后打印呈现的差异。它也标记任何部分实时后端尚未公开(较旧的自托管版本等)。应用将跳过而不是失败整个运行。 在交互式会话中的每个 apply 之前使用 plan,并作为 CI 门来捕获意外漂移。

config apply

apply 运行与 plan 相同的差异,然后遍历更改集:
  1. 按更改能力门控。 每个更改根据后端的元数据或部分的配置端点进行检查。如果后端不支持部分(例如没有 SMTP 公开的较旧自托管实例),该部分会跳过带命名警告,其余更改仍然适用。
  2. 秘密解析。 TOML 中的 env(...) 引用在应用时从本地环境解析。如果缺少引用变量,命令在发送任何更新之前中止,所以后端不会被留下半配置。
  3. 按部分调度。 每个更改被发送到适当的后端端点(/api/auth/config, /api/auth/smtp-config, /api/storage/config, /api/realtime/config, /api/schedules/config, /api/deployments/slug, 等)。更改是独立的,所以一个部分的失败不会回滚之前成功的部分。
标志:
  • --dry-run 打印计划并退出而不应用。
  • --auto-approve 跳过交互式确认。当设置 --json 时需要,因为没有 TTY 用于提示。
  • --file <path> 覆盖默认 ./insforge.toml 位置。

config export

export 拉取实时项目的可配置表面并将其写入 TOML 文件。使用它来:
  • 从您一直通过仪表板配置的项目引导 insforge.toml
  • 通过导出到临时文件并比较来对手编辑进行比较。
  • 快照配置在危险更改之前,以便您在需要回滚时重新应用快照。
export 写的文件与 CLI 从 apply 期望的形状相同,所以往返支持。 没有 --forceexport 在交互式模式中拒绝覆盖现有文件,并在 --json 模式中曲面 OUTPUT_EXISTS 错误。

秘密引用

auth.smtp.password 和任何其他敏感字段可以表示为 env(VAR_NAME) 而不是文字值:
在应用时,CLI 从本地环境读取 SENDGRID_API_KEY,验证它的存在,并向后端发送解析的值。TOML 本身从不包含秘密,所以它可以提交。 这是让一个 insforge.toml 清洁地应用到多个环境的原因:开发和生产后端仅在哪个 SENDGRID_API_KEY 在您运行 apply 时范围内有所不同。 env(...) refs 在一个 TOML 中,是 apply 的目标在每次运行时重新发送解析的密码。这是 CLI 可以告诉后端”秘密可能已轮转,请更新”的唯一方式。没有 env(...) ref 的字段被视为保留现有。

何时使用这个

  • 项目配置的版本控制。 重定向 URL、注册策略、密码策略、电子邮件验证模式、SMTP、存储上传大小和保留窗口存在在您的团队通过 PR 审查的文件中。
  • 多环境奇偶校验。 一个 TOML,应用于开发、暂存和生产,保持支持的项目设置在各处对齐。环境特定值(子域、SMTP 凭证)通过 --project-id 覆盖和 env(...) refs 流。
  • CI 驱动的配置更改。 从您的部署管道运行 config apply --auto-approve --json。与 config plan 结合作为 PR 检查,以便审查者看到合并在产品中会改变什么。
  • 灾难恢复。 提交的 insforge.toml 是已知好的配置快照。在恢复项目后重新应用它以在几秒钟内使身份验证、SMTP、存储、保留和部署设置回到预期形状。
  • 自托管和本地 OSS 开发。 运行 npx @insforge/cli link --api-base-url http://localhost:7130 --api-key <local-key> 针对 docker-compose 堆栈,然后将 CLI 的配置命令指向您的本地 OSS 实例,方式与您指向云的方式相同。

故障排除

Refusing to apply in --json mode without --auto-approve or --yes CLI 从不在非交互式运行中静默应用更改。明确通过 --auto-approve(或 -y)。 your backend doesn't expose <section> 链接后端在一个版本上,该版本还没有相关的 API。其余的更改仍然适用。升级后端(或等待下一个版本)以应用该部分。 env(...) reference resolves to nothing。 当缺少引用环境变量时,CLI 在任何 API 调用之前中止。在您的 shell 或 CI 的秘密存储中设置变量并重新运行。 Slug is already taken deployments.subdomain 与同一后端上另一个项目的子域冲突。选择不同的值。

相关