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

完了

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

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

このユニットでは、 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 イベントを処理できるように関数コードを更新します。