练习 - 为 GitHub 存储库设置 Webhook

已完成

在本练习中,你将为 GitHub 存储库设置 Webhook。 你将了解如何侦听特定事件(在本例中为 Gollum 事件),以及如何在触发事件时在函数中执行 Webhook 回叫。

设置

  1. 使用 Web 浏览器,登录 GitHub 帐户

  2. 选择左侧菜单窗格中的“新建”,创建新的存储库。 系统随即会显示“创建新存储库”页。

  3. 在“存储库名称”框中,输入有意义的名称,例如 LearnWebhookTest。

  4. 选择“公共”以激活 Wiki 模块,然后在菜单中找到它。

  5. 选择“创建存储库”。 此时将显示“快速设置”页面。

  6. 选择“创建新文件”链接。

  7. 在顶部菜单栏中,选择“Wiki”以显示你的存储库中的页面。 此时将显示“欢迎”页。

  8. 选择“创建第一个页”。 此时将显示“创建新页面”模板。

  9. 添加一些文本,然后选择“保存页面”。 Wiki 中的第一页是主页。

为 Gollum 事件添加 Webhook

Gollum 是每当创建或更新存储库的 wiki 中的页面时触发的 GitHub 事件的名称。

  1. Wiki 视图中的主页上有一个“页面”边栏,列出了你的存储库中的页面。 选择“主页”以显示主页。

  2. 在主页的顶部菜单栏中,选择“设置”。 随即将显示“设置”窗格。

  3. 在“设置”边栏中,选择“Webhooks”。 此时将显示“Webhook”页。

  4. 在右上方,选择“添加 Webhook”。 GitHub 可能要求你确认 GitHub 密码。

  5. 在“Webhooks/添加 Webhook”窗格上,为每个设置输入以下值。

    设置
    有效负载 URL 上一练习中的 Azure 函数应用的 URL。 有关帮助,请参阅以下说明。
    内容类型 从下拉列表中选择“应用程序/json”。
    你希望通过哪些事件来触发此 Webhook? 选择“让我选择单个事件”。在出现的事件列表中,向下滚动并选择“Wiki”复选框。 请确保未选中其他复选框。
    可用 已选中。

    提示

    通过从命令栏中选择“获取函数 URL”从 Azure HttpTrigger 窗格中复制函数 URL。 URL 如下所示:https://<your-functionapp-name>.azurewebsites.net/api/HttpTrigger1?code=aUjXIpqdJ0ZHPQuB0SzFegxGJu0nAXmsQBnmkCpJ6RYxleRaoxJ8cQ==

  6. 选择“添加 Webhook” 。 此时将显示“Webhook”页。

  7. 验证是否显示新的 Webhook。 它的名称末尾应该为 (gollum)。

测试 Webhook

  1. 在 GitHub 的顶部菜单栏中,选择“Wiki”。 此时将显示之前创建的“主页”页面。

  2. 选择“编辑”。 此时将显示“编辑主页”窗格。

  3. 在窗格的文本区域中,输入以下文本:

    Testing Webhook
    
  4. 选择“保存页面”。 此时将再次显示“主页”页面。

  5. 在顶部菜单栏中,选择“设置”。 随即将显示“设置”窗格。

  6. 在边栏中,选择“Webhooks”。 此时将显示“Webhook”页。

  7. 选择“编辑”。 此时将显示“Webhooks/管理 Webhook”窗格。

  8. 选择“最近交付”选项卡(可能需要滚动到页面底部)

  9. 在列表中,选择省略号 (…) 按钮,选择最新的提交条目。

    你将看到“标头”部分,包括“事件”:

    Request URL: https://testwh123456.azurewebsites.net/api/HttpTrigger1?code=aUjXIpqdJ0ZHPQuB0SzFegxGJu0nAXmsQBnmkCpJ6RYxleRaoxJ8cQ%3D%3D
    Request method: POST
    Accept: */*
    content-type: application/json
    User-Agent: GitHub-Hookshot/16496cb
    X-GitHub-Delivery: 9ed46280-6ab3-11e9-8a19-f1a14922a239
    X-GitHub-Event: gollum
    X-GitHub-Hook-ID: 312141005
    X-GitHub-Hook-Installation-Target-ID: 394459163
    X-GitHub-Hook-Installation-Target-Type: repository
    

    你还将看到“有效负载”部分包含指示 Wiki 页面已编辑的信息。 有效负载包含“页”、“存储库”和“发送方”部分,这些部分将如以下示例所示:

        "pages": [
            {
                "page_name": "Home",
                "title": "Home",
                "summary": null,
                "action": "edited",
                "sha": "04d012c5f92a95ae3f7721173bf9f2b1b35ea22f",
                "html_url": "https://github.com/.../wiki/Home"
            }
        ],
        "repository" : {
            "id": 176302421,
            "node_id": "MDEwOlJlcG9zaXRvcnkxNzYzMDI0MjE=",
            "name": "tieredstorage",
            ...
        },
        "sender" : {
            ...
        }
    
  10. 在“最近传递”选项卡下,选择“响应”选项卡。

    你将看到 Azure 函数生成的响应消息。 对于此示例,正文应包含消息。 此 HTTP 触发的函数已成功执行。 在查询字符串或请求正文中传递一个名称,以用于个性化响应