使用 GitHub 事件触发 Azure 函数

已完成

通过 GitHub Gollum 事件可以侦听 Wiki 更新。 发生此事件时,将触发 Azure HttpTrigger 函数,可以分析负载以检索和处理发送的数据。

通过设置 Webhook,你已向 IT 部门展示可以在公司 GitHub 存储库上侦听“Gollum”事件。 还演示了如何通过 Azure Functions 在函数接收到 Webhook 请求时运行代码。

在此单元中,我们将检查来自 Gollum 事件的有效负载,以便我们可以更新函数以正确分析它。

Gollum 事件有效负载

“Gollum”事件的有效负载包含以下项:

  • 已更新的页面。 每个页包含以下信息:
    • page_name - 页面名称。
    • title - 当前页标题。
    • action 在页面上执行的操作 - 已创建或已编辑。
    • html_url - HTML Wiki 页。
  • 存储库 - 有关包含 Wiki 页的存储库的信息,包括:
    • name - 存储库的名称。
    • owner - 存储库所有者的详细信息。
    • html_url - 存储库的地址。
  • 发送方 - 有关引发导致 Webhook 触发的事件的用户的信息。

例如,有效负载可能如以下代码所示。

"pages": [
    {
        "page_name": "Home",
        "title": "Home",
        "summary": null,
        "action": "edited",
        "sha": "562362bc141b9e2db1fb971e1ecb4fd0b7457f68",
        "html_url": "https://github.com/testrepo/Hello-World/wiki/Home"
    }
],
"repository": {
    ...
    "name": "testrepo",
    ...
    "owner": {
        ...
    },
    "html_url": "https://github.com/...",
    ...
},
"sender": {
    "login": "..."
    ...
}

此信息作为 HTTP POST 请求的正文传递。 我们需要更新函数逻辑,以便正确分析和处理此信息。

分析来自 Gollum 事件的信息

回想一下,Webhook 运行是指特定事件发生的时间。 然后,Webhook 使用函数的 URL 向 Azure Functions 代码设置为侦听的 URL 发送请求。 有效负载传递给 Azure 函数。 函数可以分析请求正文,以从有效负载中提取字段并执行相应的操作。

以下示例从有效负载中检索存储库名称。 事件类型在“x-github-event”请求标头中提供。 该数据是以下函数响应中的输出。

if (req.body.repository.name){
    context.res = {
        body: "Repository is: " + req.body.repository.name + ", Event Type is: " + req.headers['x-github-event']
    };
}

在下一个练习中,我们将更新函数代码,以便处理传入的 Gollum 事件