使用 GitHub 事件触发 Azure 函数
GitHub Gollum 事件支持侦听 Wiki 更新。 发生此事件时,将触发 Azure HttpTrigger 函数,可以分析负载以检索和处理发送的数据。
你向 IT 部门展示了可以通过设置 Webhook 来侦听公司 GitHub 存储库中的 Gollum 事件。 还演示了 Azure Function 应用如何在函数收到 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 事件。