跳轉到主要內容

概覽

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 與同一後端上另一個專案的子網域衝突。選擇不同的值。

相關