本教程包括。
- 在Airtable中设置webhook自动化
- 在CircleCI上创建一个webhook
- 测试构建-记录系统
自从CircleCI推出webhooks以来,我一直对这种新的集成方式为开发者提供的可能性感到兴奋。我决定尝试一下webhooks文档中描述的一个用例。这个用例涉及将构建管道工作流程的信息传输到Airtable数据库中。传输到Airtable的数据形成了一个日志,供你监控你的工作流程,你可以去设计图形和其他可视化的东西来分析构建数据。
在本教程中,我将指导你通过使用CircleCI webhooks和Airtable Automations建立这个设置的过程。
前提条件
要跟上本教程,你将需要。
有了这些,你就可以开始了。
创建一个Airtable数据库
第一步是创建一个Airtable数据库。前往您的Airtable账户,在一个工作区中创建一个新的Airtable基地。

点击基地,打开数据库表。在该表中,使用Single line text 字段类型创建以下字段。
ID:webhook的idProject:触发webhook的CircleCI项目的名称Status:项目的建立状态Time:触发Webhook的时间
注意。 你可以编辑或删除默认创建的字段,并创建我刚刚列出的新字段。
这是你将在Airtable中捕获的webhook有效载荷的子集。

在Airtable中设置webhook自动化
为了在Airtable中捕获webhook的有效载荷,你需要在你刚刚创建的基础上设置一个自定义的Airtable自动化。点击屏幕右上角的Automations。

在自动化页面上,点击创建自定义自动化。

这将打开自定义自动化页面。在这个页面上,将自动化重命名为Builds Automation (或任何你喜欢的名字)。点击添加触发器,选择When webhook is received 选项。

这将在右侧显示一个面板,向你显示Airtable将接收你的webhooks的端点。点击复制按钮,复制这个URL,以便在下一步使用。
现在,你需要测试这个webhook端点,以确保Airtable能够成功接收你的CircleCI webhooks。为了在你的自动化设置中使用webhook有效载荷,你需要用你所期望的准确有效载荷结构来测试这个端点。
为了发送一个测试的webhook请求,你将使用ReqBin。在地址栏中粘贴你的Airtable webhook端点,并从请求方法下拉选择POST。点击内容选项卡,粘贴这个样本请求。
{
"id": "3888f21b-eaa7-38e3-8f3d-75a63bba8895",
"type": "workflow-completed",
"happened_at": "2021-09-01T22:49:34.317Z",
"webhook": {
"id": "cf8c4fdd-0587-4da1-b4ca-4846e9640af9",
"name": "Sample Webhook"
},
"project": {
"id": "84996744-a854-4f5e-aea3-04e2851dc1d2",
"name": "webhook-service",
"slug": "github/circleci/webhook-service"
},
"organization": {
"id": "f22b6566-597d-46d5-ba74-99ef5bb3d85c",
"name": "circleci"
},
"workflow": {
"id": "fda08377-fe7e-46b1-8992-3a7aaecac9c3",
"name": "build-test-deploy",
"created_at": "2021-09-01T22:49:03.616Z",
"stopped_at": "2021-09-01T22:49:34.170Z",
"url": "https://app.circleci.com/pipelines/github/circleci/webhook-service/130/workflows/fda08377-fe7e-46b1-8992-3a7aaecac9c3",
"status": "success"
},
"pipeline": {
"id": "1285fe1d-d3a6-44fc-8886-8979558254c4",
"number": 130,
"created_at": "2021-09-01T22:49:03.544Z",
"trigger": {
"type": "webhook"
},
"vcs": {
"provider_name": "github",
"origin_repository_url": "https://github.com/circleci/webhook-service",
"target_repository_url": "https://github.com/circleci/webhook-service",
"revision": "1dc6aa69429bff4806ad6afe58d3d8f57e25973e",
"commit": {
"subject": "Description of change",
"body": "More details about the change",
"author": {
"name": "Author Name",
"email": "author.email@example.com"
},
"authored_at": "2021-09-01T22:48:53Z",
"committer": {
"name": "Committer Name",
"email": "committer.email@example.com"
},
"committed_at": "2021-09-01T22:48:53Z"
},
"branch": "main"
}
}
}
这个样本的有效载荷与CircleCI将发送至Airtable的workflow-completed 事件的结构相同。

你的请求应该与前面的截图相似。
现在,点击发送来测试你的webhook端点。一个成功的测试应该返回一个成功的消息。

回到Airtable,并进入你复制webhook端点的界面。Airtable可能已经自动检测到你的webhook请求,并显示了一条成功信息。如果没有成功信息,请按下测试触发按钮。

Airtable现在理解了你的webhook有效载荷的结构,你可以在你的自动化中使用它。
添加一个自动化动作
下一步是添加一个动作,当收到来自CircleCI的webhook时要执行。转到自动化页面。点击 "运行动作"标签上的 "+添加动作"按钮。从下拉菜单中选择创建记录,为每个收到的webhook在Airtable中创建一个新条目。在屏幕右侧的属性面板上,为表字段选择Table 1 (这是用你的Airtable基础创建的表的默认名称)。
在表格的字段部分,选择ID 字段。这将在该字段下方显示一个文本框。 点击加号**+图标。然后在Webhook (from Step 1: When webhook received) 选项上点击继续**。点击body ,然后通过点击插入选择id 属性。
使用同样的方法将以下表格字段映射到其各自的有效载荷属性。
- 项目:
body>project>name - 状态:
body>workflow>status - 时间:
body>happened_at
你的字段应该与下一张截图中的字段相似。

使用名称旁边的切换按钮,打开自动化。

返回到表格视图。你的自动化将被列在屏幕的右边。描述应该说。"当收到一个webhook时,创建一个记录"

在CircleCI上创建一个webhook
下一步是在CircleCI上创建您的webhook。当您的项目构建或工作流程完成后,一个webhook请求将被发送到Airtable,以记录构建过程的信息。
准备好您的webhook URL后,您现在可以在CircleCI上设置一个webhook。进入您的任何CircleCI项目,并导航到项目设置>Webhooks。在Webhooks页面,点击添加Webhook按钮。
这将显示一个表格,你可以用来创建你的Webhook。如下面的截图所示,填写该表格。给它一个名字,并从Airtable中输入你的Webhook端点URL。

点击 "添加Webhook"按钮,创建您的Webhook。一旦创建,它就会显示在webhooks的列表中。
测试构建-日志系统
你现在已经设置好了一切,将你的构建信息记录到Airtable中。现在是测试的时候了。运行你的构建,完成几次。一旦你的项目完成了几次构建,请检查你的Airtable基础上的表格,以审查这些条目。

结论
就这样,你有了一个使用CircleCI webhooks和Airtable自动化的CircleCI构建的日志系统。当然,你可以通过在表中添加更多的字段,并将它们映射到各自的有效载荷属性来扩大捕获的信息量。你还可以在Airtable中使用捕获的数据创建不同的视图。只要稍加努力,你就可以用这个系统来执行分析操作,从数据中获得可操作的信息。
编码愉快!
、