资讯详情

ToolJet 版本管理与发布指南:使用 App Version Manager 实现应用版本控制与生产发布

📅 2026/9/12 13:48:00 | 华诺云谱 👁 阅读
ToolJet 版本管理与发布指南:使用 App Version Manager 实现应用版本控制与生产发布
ToolJet 版本管理与发布指南使用 App Version Manager 实现应用版本控制与生产发布【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet导读本指南围绕 ToolJet 的Versioning and Release版本管理与发布功能展开介绍如何在 App Builder 中通过右上角的App Version Manager创建、重命名、删除应用版本以及如何将选定版本发布Release到生产环境、交付给最终用户。读完本文你将掌握 ToolJet 应用的多版本协作工作流多个开发者各自基于独立版本迭代、互不覆盖理解 DRAFT / PUBLISHED / RELEASED 三种版本状态在前后端的行为差异以及未发布就公开和已发布版本被锁定编辑这两条关键安全约束背后的实现原理。文中操作步骤以 versioning-and-release.md 为骨架并结合 frontend 与 server 的源码进行纵深解读。什么是版本管理与发布ToolJet 的版本管理Versioning让多个开发者可以在同一个应用上各自保存自己的版本。每个开发者可以在自己的版本上独立修改页面、组件、数据查询和事件处理从而避免互相覆盖对方的工作——这在多人协作开发一个内部工具或业务应用时尤为关键。发布Release则是把某个版本正式定稿并推送到生产环境的过程发布后最终用户通过应用公开访问链接看到的就是该发布版本的内容而不是构建器中尚未定稿的草稿。从数据模型上看每个应用版本在数据库中对应app_versions表中的一行记录见 app_version.entity.ts版本名称与应用分支共同构成唯一约束Unique([name, branchId])。版本有三个状态枚举AppVersionStatus状态含义DRAFT草稿正在编辑中、尚未保存为正式版本的中间态PUBLISHED已保存Published内容已定稿可以进入发布流程RELEASED已发布Released已推送到生产环境最终用户可见前端版本下拉列表正是依据这些状态来渲染标签草稿显示黄色的Draft标签已发布的版本在列表中显示为绿色已发布Released版本显示绿色Released标签相关逻辑见 VersionDropdownItem.jsx。版本管理入口App Version Manager所有版本操作都集中在 App Builder 工具栏右上角的App Version Manager应用版本管理器中。它显示当前正在编辑的版本名称点击后展开下拉列表列出该应用已创建的所有版本并支持切换当前编辑的版本创建新版本重命名版本删除版本发布版本Release。前端对应组件为 VersionManagerDropdown.jsx它通过useVersionManagerStore与全局 Store 联动负责版本列表的懒加载打开下拉时才拉取、环境筛选、Git 同步状态展示等。后端则通过 REST API 提供版本数据GET /api/apps/:id/versions获取版本列表、PUT /api/apps/:id/versions/:versionId更新版本等见 controller.v2.ts。从源码看版本列表返回时会标记第一个版本为isCurrentEditingVersion当前编辑版本并针对 Git 分支型版本AppVersionType.BRANCH把内部 UUID 名称替换为人类可读的分支名见 service.ts保证下拉列表与导出弹窗中显示一致。创建新版本创建版本的操作路径如下打开工具栏中的App Version Manager点击下拉按钮查看该应用已创建的所有版本已发布Released的版本名称以绿色显示。点击下拉列表底部的Create new version按钮弹出创建弹窗。在弹窗中填写Version Name版本名称。在Create version from下拉框中选择新版本的来源版本它会列出该应用已有的所有版本选择其中一个作为新版本的基线如果不选择ToolJet 会自动选用最后创建的版本作为基线。点击Create new Version按钮完成创建。创建版本的底层逻辑从前端看创建版本弹窗由 CreateVersionModal.jsx 渲染内部委托给通用的BaseCreateVersionModal。从后端看创建版本的核心实现在VersionService.createVersion见 service.ts及其下层工具类新版本会克隆来源版本的内容页面、组件、数据查询、事件等而不是从空白开始这正是Create version from的含义克隆过程会复制来源版本对应的页面与事件定义见 create.service.ts 中对versionFromId的处理在启用了 Git 同步且为单分支模式的工作区中创建草稿会触发替换既有草稿replaceDraftVersion的原子操作而不是无限堆积多个草稿见 service.ts。重命名版本如果需要对已有版本改名打开App Version Manager展开版本列表找到要重命名的版本点击版本名称旁边的重命名编辑按钮铅笔图标在弹出的模态框中输入新的版本名称并确认。需要特别注意的是并非所有版本都可以随意改名。后端在更新版本时有明确的保护逻辑——如果版本状态不是DRAFT即已保存的版本尝试修改其名称或描述会被拒绝并抛出BadRequestExceptionCannot edit name or description of a saved version.相关校验见 service.ts。也就是说只有草稿版本允许重命名已保存/已发布的版本名称是受保护的前端也只在草稿版本上显示Edit details菜单项见 VersionDropdownItem.jsx。删除版本删除版本同样在App Version Manager中完成展开版本下拉列表找到要删除的版本点击该版本右侧的删除图标垃圾桶确认删除。删除操作的细节从源码中可以确认前端删除流程会先弹出ConfirmDialog确认框若启用了 Git 同步且版本已同步到远端确认文案会明确指出该版本也会从 Git 中删除且无法恢复按钮变为 Delete and commit见 VersionManagerDropdown.jsx后端删除接口由VersionService.deleteVersion实现删除时会记录审计日志包含被删版本 id 与名称见 service.ts若删除的模块版本仍被其他应用引用前端会弹出 Dependent apps found! 的警告框并阻止删除见 VersionManagerDropdown.jsxGit 同步开启时最后一个已同步草稿不允许被删除后端有镜像守卫逻辑前端会先提示 Cannot delete the last draft version while git sync is enabled。发布版本Release发布Release是将应用正式推送至生产环境的操作。发布之后用户通过应用的公开链接访问到的即为此版本。发布操作步骤打开App Version Manager从下拉列表中选择要发布的版本只有状态为已保存的版本才可发布纯草稿不能直接发布点击右上角的Release按钮在弹出的确认对话框中点击Release确认发布当前版本。发布权限与前置条件源码级解读前端对 Release / Promote 按钮的显隐有严格判定见 VersionDropdownItem.jsx草稿版本DRAFT不显示发布按钮——必须先保存为版本已发布的版本PUBLISHED在 CE社区版中可直接 Release在启用多环境multi-environment的版本中版本需要先逐级Promote提升到生产环境priority 3后才能在生产环境执行 Release已经发布Released的版本不会重复显示发布按钮。后端promoteVersion实现了环境逐级提升只有当版本当前所在环境与请求的环境一致时才能将其提升到优先级更高的下一环境同时后端明确拒绝提升草稿You cannot promote a draft version. Please save the version before promoting.详见 service.ts。发布后前端会根据releasedVersionId在版本列表中渲染绿色 Released 标签见 VersionDropdownItem.jsx。两条关键安全约束官方文档在发布章节以警示框caution的形式强调了两条重要约束这两条约束也都能在后端代码中得到印证约束一未发布就公开 预览模式当应用被设为Public公开但尚未发布任何版本时其行为等同于预览preview通过公开应用 URL 加载的版本就是当前 App Builder 中正在加载的版本。也就是说任何人都能看到构建器当前打开的那份内容——这对协作团队意味着在应用定稿前要谨慎开启公开访问避免把未完成的半成品暴露给外部用户。约束二已发布版本禁止直接编辑为防止误把未完成的应用发布出去ToolJet 在已发布Released版本上会冻结编辑器如果你想修改已发布版本的内容系统会提示你先创建一个新版本编辑已发布版本本身会被阻止。这一机制在后端有明确实现VersionService.getVersion在返回版本数据时若检测到版本状态为PUBLISHED会设置shouldFreezeEditor true见 service.ts前端收到该标志后即进入编辑器只读状态。同理在启用了多环境许可证的工作区中当前环境优先级大于 1即非开发环境时编辑器同样会被冻结见 service.ts。这一设计确保了生产内容永远只能通过新建版本 → 修改 → 发布的受控流程变更。版本管理的最佳实践结合文档操作路径与源码约束可以总结出以下可落地的协作实践一开发者一版本多人协作时每个成员基于Create version from各自创建独立版本互不干扰后端在非 Git 工作区允许多个草稿并存进一步降低了协作摩擦。先保存、再发布草稿DRAFT既不能发布也不能直接提升环境任何变更进入生产前都必须先执行保存Save version生成PUBLISHED版本。发布即定稿RELEASED版本内容被冻结后续迭代一律新建版本——这既是安全约束也是可追溯的变更记录。公开访问与发布状态联动在应用尚未 Release 前保持非公开避免公开 URL 暴露构建器中的当前版本。结合 Git 同步使用启用了 Git 同步的工作区中版本与 Git tag 一一对应可下拉远端版本Pull、识别未同步版本删除已同步版本会连同 Git tag 一并提交删除相关 UI 逻辑见 VersionManagerDropdown.jsx。结语ToolJet 的版本管理与发布机制为低代码应用的多人协作与生产交付提供了一条清晰的路径DRAFT草稿→ PUBLISHED已保存→ RELEASED已发布的三态流转配合已发布版本冻结编辑的硬约束既保证了开发自由度又守住了生产安全底线。无论你是个人开发者还是团队协作善用 App Version Manager 都能让应用的每次迭代都处于可控、可追溯的状态。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。