练习 - 使用 GitHub 事件触发 Azure 函数

已完成

在本练习中,你将更新函数以分析来自 GitHub Webhook 有效负载的信息,并显示结果。

更新函数以分析 Webhook 有效负载

  1. 在该 Azure 门户中,转到之前创建的函数应用。

  2. 在“函数应用”窗格的左侧菜单窗格中,在“函数”下,选择“函数”。 此时将显示函数应用的“函数”窗格。

  3. 选择创建的 HttpTrigger1。 此时将显示函数的“HttpTrigger1”窗格。

  4. 在左侧菜单窗格的“开发人员”下,选择“代码 + 测试”。 此时将显示函数的“代码 + 测试”窗格。

  5. 在代码上方的路径中,从下拉列表中选择“index.j”。 此时将显示触发器的 JavaScript。

  6. 通过将函数体中的最后三行代码替换为以下代码来更新代码。

    if (req.body.pages[0].title){
        context.res = {
            body: "Page is " + req.body.pages[0].title + ", Action is " + req.body.pages[0].action + ", Event Type is " + req.headers['x-github-event']
        };
    }
    else {
        context.res = {
            status: 400,
            body: ("Invalid payload for Wiki event")
        };
    }
    

    此代码从请求标头中检索事件类型,并从消息正文中检索标题和操作字段。 此信息指示页面已更改,并指示页面是编辑的页面还是新创建的页面。 该代码随后构造一个汇总该操作的响应。 JavaScript 应如下所示:

    module.exports = async function (context, req) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        const name = (req.query.name || (req.body && req.body.name));
        const responseMessage = name
            ? "Hello, " + name + ". This HTTP triggered function executed successfully."
            : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
    
        if (req.body.pages[0].title){
            context.res = {
                body: "Page is " + req.body.pages[0].title + ", Action is " + req.body.pages[0].action + ", Event Type is " + req.headers['x-github-event']
            };
         }
         else {
            context.res = {
                status: 400,
                body: ("Invalid payload for Wiki event")
            };
        }
    }
    
  7. 在顶部菜单栏中,选择“保存”。

使用 Gollum 事件触发 Azure 函数

  1. 返回 GitHub 帐户。

  2. 选择用于此模块的存储库。

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

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

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

  6. 选择“最近提交”选项卡。

  7. 通过选择省略号按钮 (...),选择最新的(顶部)提交条目。

  8. 选择“Redeliver”。

  9. 在出现的“重新提交有效负载?”​​对话框中,选择“是的,请重新提交此有效负载”。 此操作模拟你再次更改 Wiki 页面。

  10. 通过选择省略号按钮 (...),选择最新的(顶部)提交条目(重新提交)。

  11. 选择“响应”选项卡。随即会看到 Webhook 如何触发函数,然后分析信息并发回类似于以下文本的响应:

    Page is Home, Action is edited, Event Type is gollum