farmbot开发入门教程-FarmBot OS 开发
说明:
- 大多数开发将在“主机”环境中完成。这意味着,我们无需在计算机上进行更改,然后将其推送到设备,而是可以在自己的机器上快速开发。有关此内容的更多信息,请参阅此Nerves 入门指南。但作为副作用,我们需要能够配置(至少)两个不同的环境/目标组合,其中:
environment是其中之一:
环境 描述
prod- 生产环境
- 未启用任何开发者功能(例如日志、本地固件更新等)。
- 没有远程 shell
- 没有远程固件更新。
- 必须进行数字签名。
dev- 开发环境 - 将大多数内容记录到控制台。
- 远程 shell
- 远程固件更新。
test- 测试环境 - 仅存在于host当前在目标上运行的测试。
并且target(environment意志运行的地方)是以下之一:
目标 使用
host 为了发展
rpi3 用于在 Raspberry Pi 3 上运行
rpi 在 Raspberry Pi Zero 上运行
运行单元测试
- 开发功能时应进行测试。您应该安装并运行本地Farmbot 堆栈,并对其进行配置以使其正常工作。config/host/auth_secret_template.exs将有更完整的说明。
MIX_ENV=test mix deps.get # Fetch test env specific deps.
mix test
功能开发
- 如果您计划开发功能,您可能希望使用dev和host组合来开发它们。这些都是默认值,因此您只需执行以下操作即可:
mix deps.get # You should only need to do this once.
iex -S mix # This will start an interactive shell.
设备上的开发
- 有时需要在设备本身上开发和测试功能。这可以通过dev和rpi3组合来实现。强烈建议您为此配备一条 FTDI 电缆,例如这根
MIX_TARGET=rpi3 mix deps.get # Get deps for the rpi3 target. You should only need to do this once.
MIX_TARGET=rpi3 mix firmware # Produce a firmware image.
# Make sure you SDCard is plugged in before the following command.
MIX_TARGET=rpi3 mix firmware.burn # Burn the sdcard. You may be asked for a password here.
本地固件更新
- 如果您的机器人连接到您的本地网络,您应该能够通过网络将更新推送到您的设备。
# make some changes to the code...
MIX_TARGET=rpi3 mix firmware # Build a new fw.
MIX_TARGET=rpi3 mix firmware.push <your device ip address> # Push the new fw to the device.
- 您的设备现在应该会重新启动并进入新代码。只要您没有以某种方式导致恢复出厂设置(错误的初始化代码、拼写错误等),您就应该能够持续向设备推送更新。
更新 Rollbar 令牌
Rollbar 用于跟踪 FarmBot OS 上的生产运行时错误。使用编译到 FBOS 发布映像中的 rollbar 令牌报告错误。随着时间的推移,必须轮换令牌,因为 Rollbar 将继续从不感兴趣的旧版 FarmBot OS 收到错误报告。
在 Rollbar 管理设置页面中创建一个新的项目令牌。https://rollbar.com/ORG/PROJECT/settings/access_tokens/
将令牌复制到 FarmBot OS 的 Circle CI 项目中的 ROLLBAR_TOKEN 环境变量中。
FarmBot OS 的新版本将使用新的令牌。
确保为令牌设置了合理的速率限制。
发布 FBOS 候选版本
- 从 创建一个功能分支staging。分支名称必须以 开头qa/。
- 按要求实现功能。
- 提交更改并推送到新创建的qa/***分支。
- CI 系统将开始新的草稿发布。草稿将出现在发布页面上。
- 构建完成后(约 5 分钟),将草稿转换为发布版本。请勿取消选中预发布复选框。
- 运行rake releases:publish并按照说明进行操作。
发布 FBOS 稳定版本
- staging从到创建一个新的拉取请求 (pull request) main,并在 CI 通过后合并。
- 将提交合并到暂存区将触发 CI 构建。
- 5 分钟后,将创建一份草稿发布版本。
- 访问发布页面并将草稿转换为发布。取消选中预发布复选框。如果不这样做,下一步将不起作用。
- 按照提供的说明运行rake releases:publish并将版本发布到频道。stable
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号