GitHub イベントを使用して Azure 関数をトリガーする

完了

GitHub の Gollum イベントを使用すると、Wiki の更新をリッスンできます。 このイベントが発生すると、Azure HttpTrigger 関数がトリガーされ、ペイロードを解析して、送信されたデータを取得して処理できます。

Webhook を設定することで、会社の GitHub リポジトリ上の Gollum イベントをリッスンできることを IT 部門に示しました。 また、Azure Functions アプリで、関数が Webhook 要求を受け取ったときに、コードを実行できることを示しました。

このユニットでは、Gollum イベントからのペイロードを調べ、正しく解析できるように関数を更新します。

Gollum イベントのペイロード

Gollum イベントのペイロードには、以下の項目が含まれています。

  • pages 更新されたページ。 各ページには次の情報が含まれています。
    • page_name ページの名前。
    • title 現在のページのタイトル。
    • action ページ上で実行されたアクション (created または edited)。
    • html_url HTML Wiki ページ。
  • repository 次のように、Wiki ページを含むリポジトリに関する情報。
    • name リポジトリの名前。
    • owner リポジトリの所有者の詳細。
    • html_url リポジトリのアドレス。
  • sender 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 イベントを処理できるように、関数コードを更新します。