用CircleCI webhooks和Airtable Automations开发一个管道构建的日志系统的教程

161 阅读6分钟

本教程包括。

  1. 在Airtable中设置webhook自动化
  2. 在CircleCI上创建一个webhook
  3. 测试构建-记录系统

自从CircleCI推出webhooks以来,我一直对这种新的集成方式为开发者提供的可能性感到兴奋。我决定尝试一下webhooks文档中描述的一个用例。这个用例涉及将构建管道工作流程的信息传输到Airtable数据库中。传输到Airtable的数据形成了一个日志,供你监控你的工作流程,你可以去设计图形和其他可视化的东西来分析构建数据。

在本教程中,我将指导你通过使用CircleCI webhooks和Airtable Automations建立这个设置的过程。

前提条件

要跟上本教程,你将需要。

  1. 一个CircleCI项目
  2. Airtable账户

有了这些,你就可以开始了。

创建一个Airtable数据库

第一步是创建一个Airtable数据库。前往您的Airtable账户,在一个工作区中创建一个新的Airtable基地

Create base - Airtable

点击基地,打开数据库表。在该表中,使用Single line text 字段类型创建以下字段。

  • ID:webhook的id
  • Project:触发webhook的CircleCI项目的名称
  • Status:项目的建立状态
  • Time:触发Webhook的时间

注意。 你可以编辑或删除默认创建的字段,并创建我刚刚列出的新字段。

这是你将在Airtable中捕获的webhook有效载荷的子集。

Configure Table - Airtable

在Airtable中设置webhook自动化

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

Click Automations - Airtable

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

Create custom Automation - Airtable

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

Add Trigger - Airtable

这将在右侧显示一个面板,向你显示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 事件的结构相同。

Sample Request - Reqbin

你的请求应该与前面的截图相似。

现在,点击发送来测试你的webhook端点。一个成功的测试应该返回一个成功的消息。

Successful test - Reqbin

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

Successful test - Airtable

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

你的字段应该与下一张截图中的字段相似。

Automation fields

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

Turn on automation - Airtable

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

New automation - Airtable

在CircleCI上创建一个webhook

下一步是在CircleCI上创建您的webhook。当您的项目构建或工作流程完成后,一个webhook请求将被发送到Airtable,以记录构建过程的信息。

准备好您的webhook URL后,您现在可以在CircleCI上设置一个webhook。进入您的任何CircleCI项目,并导航到项目设置>Webhooks。在Webhooks页面,点击添加Webhook按钮。

这将显示一个表格,你可以用来创建你的Webhook。如下面的截图所示,填写该表格。给它一个名字,并从Airtable中输入你的Webhook端点URL。

Create Webhook - CircleCI

点击 "添加Webhook"按钮,创建您的Webhook。一旦创建,它就会显示在webhooks的列表中。

测试构建-日志系统

你现在已经设置好了一切,将你的构建信息记录到Airtable中。现在是测试的时候了。运行你的构建,完成几次。一旦你的项目完成了几次构建,请检查你的Airtable基础上的表格,以审查这些条目。

Webhook Logs - Airtable

结论

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

编码愉快!