这个项目搭载了我上一篇文章使用 Slack 和 Particle 创建 IoT 滚动选框。
我不想使用滚动字幕显示独特的消息,而是希望仅在持续集成平台构建失败时接收通知。在此通知中有用的是,哪个分支失败了,谁是用户。
CircleCI是一个很棒的持续集成平台,我在个人项目中经常使用它,但我相信这种方法(或类似方法)适用于大多数人。
CircleCI config.yml允许您在“构建失败”时调用命令。这很棒,因为我们可以将 POST 请求卷曲到 API ,将我们的CIRCLE_BRANCH和CIRCLE_USERNAME传递给它。简单!
我对这个项目的方法的另一个看法是我想使用Particle Mesh Networking 。本质上,粒子网状网络由具有网络访问权限的网关设备和一个/多个端点设备组成。在Particle 博客上可以找到更好的解释。
我的示例将使用Argon WiFi 网关设备和 2 个Xenon端点设备。
网关和端点设备可以通过发布或订阅事件来相互通信。只有此网络上的设备才能访问这些事件。
知道这一点,我们可以在我们的网关设备 (Argon) display_broken_build上定义一个函数,当 API 调用它时,它可以在我们的网络matrix_display_message上发出一个自定义事件。我们的端点将订阅事件matrix_display_message ,然后可以执行特定操作。
我的计划是让 1 个 Xenon 端点运行滚动选框,而另一个 Xenon 端点显示损坏构建的数量。这表明在工作环境中,我们可以在我们的网络上使用多个设备来显示构建失败的通知以及可能更详细的统计信息。
首先,我们需要一个会失败的构建。创建一个 git repo 并创建一个.circleci/config.yml文件。(参见示例)确保您随后在 CircleCI 应用程序中选择了您的 git 存储库。同时在您的新存储库中创建一个package.json文件。
此清单将没有依赖项或脚本。(见例子)
my-failing-repo
| - .circleci/config.yml
| - package.json
将此推送到 github 并导致 CircleCI 构建您的项目。
首先它会安装 npm 依赖项,然后是npm foo,它不应该存在于你的package.json文件中,导致构建失败。
我创建了一个 expressJS API (index.js) 和一个路由 /display。
在/api/display上,API 将登录到我的设备并调用它的display_broken_build函数,将分支和用户值传递给它。
API 引用存储在 local.env 文件中的环境变量。
PDEVICE=particle_device_id
PUSER=particle_user
PPASS=particle_password
API 然后托管在now上,我的now.json清单向 API 公开了我的路由和秘密。
您可以像这样向现在的部署提供您的秘密:
now secret add mesh-pub-user foo@bar.com
部署 API 后,更新对.circleci/config.yml文件中端点的引用。
我正在使用 Argon 作为我的网关设备。
使用 Particles 的 Workbench,我在我的设备上刷新了argon-publish.ino 。
您会注意到在设置时我定义了接受命令(字符串)的函数display_broken_build ,并且在通过 API 调用该函数的事件中,我调用了displayMessage函数,该函数随后会将 matrix_display_message发送到网络上。
此设备的代码 ( xenon-subscribe-scrolling-marquee.ino ) 与我原来的滚动字幕示例非常相似。
不同之处在于,此设备在设置时订阅了matrix_display_message事件。收到后,调用displayMessage,从而写入 LCD。
Mesh.subscribe("matrix_display_message", displayMessage);
该设备的代码 ( xenon-subscribe-counter.ino ) 非常简单。
我将计数初始化为0,每次发布matrix_display_message时它都会调用logToDisplay ,将计数递增 1 并将其发送到 LCD 显示器。
一旦部署了 API,设备闪烁,并发布了失败的 CircleCI 存储库,我就有了自己的可爱的物联网显示网络,在构建失败时通知我。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !