产品定价 立即试用
社区版
文档 > 贡献指南 > 如何贡献
入门
指南 安装 架构 API 常见问题
目录

贡献指南

我们持续倾听社区反馈以改进 ThingsBoard。 若有想法或新功能建议,请在ThingsBoard GitHub issue 页面 提交 issue。 请先确认 issues 列表中尚无相同或高度相似的任务。

开始实现前,请等待 ThingsBoard 团队对 issue 进行回复。我们会尽快回复。

所需工具

要构建并运行 ThingsBoard 实例,请确保已安装 JavaMaven

源码安装 章节描述了 JavaMaven 的安装步骤。

运行集成测试和黑盒测试需要 dockerdocker-compose,详见 运行测试 章节。

Fork 并构建 ThingsBoard 仓库

安装好所需工具后,请 fork 官方 ThingsBoard 仓库

然后克隆 fork 项目的源码。

注意: 下文中将克隆的目录记为 ${TB_WORK_DIR}

首次在 Windows 上构建时,可能需要先运行以下命令安装所需的 npm 依赖:

1
2
npm install -g cross-env 
npm install -g webpack 

导入到 IDE 前,请先在项目根目录使用 Maven 构建:

1
2
cd ${TB_WORK_DIR}
mvn clean install -DskipTests

构建会生成 application 模块中的 protobuf 文件,供 IDE 正确编译使用。

接下来将项目作为 Maven 项目导入你常用的 IDE。 可参考 IDEAEclipse 的导入说明。

注意: 使用 Eclipse 时,导入 Maven 项目后建议禁用 ui-ngx 的 Maven Project builder。可显著提升 Eclipse 性能,避免 Maven builder 扫描 node_modules 目录(不必要且会导致卡顿)。右键 ui-ngx 项目 → Properties -> Builders,取消勾选 Maven Project Builder,点击 Ok

数据库

默认 ThingsBoard 使用 PostgreSQL 数据库存储实体和时序数据。 也可配置为混合模式:实体数据使用 PostgreSQL,时序数据使用可扩展的 Cassandra DB 集群。

SQL 数据库:PostgreSQL

请使用 此链接 查看 PostgreSQL 安装说明。

安装 PostgreSQL 后,可创建新用户或设置主用户密码。

然后,以 “postgres” 用户身份连接 “postgres” 数据库:

1
psql -U postgres -d postgres -h 127.0.0.1 -W

创建名为 “thingsboard” 的 ThingsBoard 数据库:

1
CREATE DATABASE thingsboard;

按两次 “Ctrl+D” 退出 PostgreSQL。

[可选] 时序数据 NoSQL 数据库:Cassandra

请参考以下安装 Cassandra 的章节:

编辑 ThingsBoard 配置文件:

1
/application/src/main/resources/thingsboard.yml

找到并将数据库类型配置参数设置为 ‘cassandra’。

1
2
3
database:
  ts:
    type: "${DATABASE_TS_TYPE:cassandra}" # cassandra 或 sql(混合模式下仅此值应为 cassandra)

注意: 若 Cassandra 安装在远程机器或绑定到自定义接口/端口,需在 thingsboard.yml 中额外配置。 请参阅 配置指南 了解 thingsboard.yml 的详细说明及 Cassandra 连接相关属性。

更新 thingsboard.yml 后,请重新构建 application 模块以使配置生效:

1
2
cd ${TB_WORK_DIR}/application
mvn clean install -DskipTests

创建数据库 schema 并填充演示数据

为创建数据库表,请执行以下命令:

On Linux:

1
2
3
cd ${TB_WORK_DIR}/application/target/bin/install
chmod +x install_dev_db.sh
./install_dev_db.sh

On Windows:

1
2
cd %TB_WORK_DIR%\application\target\windows
install_dev_db.bat

运行开发环境

以热重载模式运行 UI 容器

默认 ThingsBoard UI 在 8080 端口提供服务。若需以热重载模式运行 UI,可按以下方式操作。

注意: 此步骤为可选,仅在对 UI 进行修改时需要。

1
2
cd ${TB_WORK_DIR}/ui-ngx
mvn clean install -P yarn-start

将启动监听 4200 端口的服务器,所有 REST API 和 websocket 请求将转发至 8080 端口。

运行服务端容器

可通过以下两种方式启动服务端容器。

方式一:在 IDE 中运行 application 模块下 org.thingsboard.server.ThingsboardServerApplication 的 main 方法。

方式二:从命令行以标准 Spring boot 应用方式启动:

1
2
cd ${TB_WORK_DIR}
java -jar application/target/thingsboard-${VERSION}-boot.jar

试运行

访问 http://localhost:4200/ 或 http://localhost:8080/,使用演示数据凭据登录 ThingsBoard:

  • 登录名 tenant@thingsboard.org
  • 密码 tenant

确认可正常登录且所有服务已正确启动。

代码修改

此时可以开始修改代码。 更新服务端或 UI 代码。 从用户角度验证修改是否符合需求与预期。

验证构建

在将修改提交到远端仓库前,使用 Maven 在本地执行带测试的构建:

1
mvn clean install

确保构建成功且所有测试通过。建议同时运行 black-box tests

推送到你的 fork

完成代码修改后,将更改提交并推送到你的 fork 仓库,并附上有意义的提交信息:

1
2
git commit -m 'Some meaningful comment'
git push origin master

创建 pull request

请默认向 master 分支创建 pull request(若在 GitHub issue 初步讨论阶段有需要,会提供其他 branch 名称)。

若 ThingsBoard master 分支在你提交前已有新变更导致冲突,请先解决冲突后再继续。

签署贡献许可协议(CLA)并确认远端构建成功。CLA 将通过 GitHub CLA bot 自动签署。

image

请耐心等待,pull request 可能需要数天才能完成审核。

另请参阅

下一步