产品定价 立即试用
云平台
欧洲地区
文档 > 其他功能 > 版本控制
入门
指南 API 常见问题
目录

版本控制

3.4及以上版本

ThingsBoard版本控制服务支持通过Git导出和恢复ThingsBoard实体。 租户管理员可通过UI或REST API配置Git仓库访问。 平台用户可导出单个或多个ThingsBoard实体、浏览版本历史,并将实体恢复至指定版本。

该功能适用于多名工程师共同设计同一Rule Chain或Dashboard的场景,可提升体验并简化CI/CD。 也可在租户或平台实例之间便捷克隆方案。

架构

Entity External ID(实体外部ID)

每个ThingsBoard实体均有\u201cid\u201d字段,为该实体在特定ThingsBoard环境内的唯一标识。 每个可导出的ThingsBoard实体还包含\u201cexternalId\u201d字段。 该字段用于在多个环境之间导入/导出时识别同一实体。 \u201cid\u201d与\u201cexternalId\u201d均为UUID类型。

\u201cexternalId\u201d还用于在Rule Chain(rule nodes)和仪表板(aliases、widget actions)中自动替换实体id。 因此,若导入引用了设备或资产的Rule Chain,请确保已导出/导入对应的设备或资产。

可导出实体与设置(Exportable Entities and settings)

本功能初始版本支持以下实体:Device、Asset、Entity View、Customer、Dashboard、Widget Bundle、Rule Chain、Entity group、Role、Converter和Integration。

我们刻意不提供User实体的导出,因用户邮箱在平台实例内唯一,将用户邮箱和凭据导出到Git不妥。

导出实体时,会在Git中存储实体的JSON表示。也可导出实体属性、关系和凭据(仅设备)。

仓库结构(Repository structure)

首次将实体导出到Git时,使用实体\u201cid\u201d作为仓库内文件名。 从Git导入到ThingsBoard时,文件名中的\u201cid\u201d将成为实体的\u201cexternalId\u201d。 \u201cexternalId\u201d在租户范围内唯一,因此可在同一平台的不同租户或不同实例之间导入/导出实体。 每次执行导出和导入时,均通过\u201cexternalId\u201d定位要更新的实体。 示例见下。

假设有开发环境ThingsBoard实例,导出了名为\u201cDashboard 1\u201d、id为\u201c4864b750-da7d-11ec-a496-97fa2815d2fe\u201d的仪表盘。 则仓库中将存在如下路径的文件:

1
dashboard/4864b750-da7d-11ec-a496-97fa2815d2fe.json

假设将该仪表盘\u201cD1\u201d导入生产ThingsBoard实例。首次将实体导入新的ThingsBoard实例时会设置\u201cexternalId\u201d。 此时,生产环境中的仪表板实体id不同,但其\u201cexternalId\u201d仍为\u201c4864b750-da7d-11ec-a496-97fa2815d2fe\u201d。

客户层级存储在递归的 ‘hierarchy’ 文件夹中,与UI中\u201cCustomer hierarchy\u201d页面类似。 实体组存储在 ‘groups’ 文件夹。每个组有 ‘id.json’(存储组实体)和 ‘id_entities.json’(存储组内实体id列表)。 保留组 ‘All’ 不包含 ‘id_entities.json’,因 ‘All’ 组包含全部实体。

同步策略(Sync strategy)

平台支持两种Git导出同步策略:Merge和Overwrite。
\u201cMerge\u201d为默认策略,仅将所选实体追加到仓库,适合保存一个或多个文件且不删除仓库中的其他文件。 \u201cOverwrite\u201d策略会完全重写对应仓库文件,适合将实例中的实体列表(如Dashboards)与Git仓库完全同步。 此前已保存到Git但当前不在平台实例中的实体,将在对应commit中从Git仓库删除。

可扩展性(Scalability)

ThingsBoard版本控制服务可作为单体实例的一部分,或作为独立微服务以实现水平扩展。 版本控制服务的每个实例负责处理集群中特定租户分区的同步任务。 每次\u201ccommit\u201dAPI调用可能耗时。不支持同一租户范围内的并发\u201ccommit\u201dAPI调用。 若已有\u201ccommit\u201d在进行中,新到达的\u201ccommit\u201dAPI调用将被系统取消。

使用

Git设置配置(Git Settings configuration)

租户管理员可进入\u201cAdvanced features\u201d区域的\u201cVersion control\u201d页面。该页面可配置Git仓库URL、默认分支名和认证设置。 请提供空Git仓库的URL。

导出到Git(Export to Git)

单个实体导出(Single Entity Export)

进入实体详情并打开\u201cVersion control\u201d选项卡。
Rule Chain和Dashboard在编辑器中内置版本控制按钮和弹窗部件。 参见下方截图。

Device(设备):

Rule Chain(规则链):

Dashboard(仪表板):

批量实体导出(Multiple Entity Export)

进入版本控制页面。可选择要恢复的一种或多种实体类型。默认选中全部实体类型。

Auto-commit

Auto-commit可在通过UI或REST API保存实体时,自动提交Dashboard和Rule Chain。
Auto-commit异步执行以提升UI体验。
将实体分配给客户(更改实体owner)时不会触发auto-commit。
此类情况下,应使用overwrite策略提交该实体类型的全部实体。

从Git恢复(Restore from Git)

进入版本控制页面。选择commit并指定恢复设置。

下一步