使用 GitHub 事件觸發 Azure 函式
GitHub Gollum 事件可讓您接聽 Wiki 更新。 當此事件發生時,會觸發您的 Azure HttpTrigger 函式,而且您可以剖析承載來擷取和處理傳送的資料。
您已經向 IT 部門說明您可以透過設定 Webhook,在公司 GitHub 存放庫上接聽 Gollum 事件。 您也已經示範 Azure 函數應用程式如何讓您在函式收到 Webhook 要求時執行程式碼。
在此單元中,我們將查看來自 Gollum 事件的承載,以便更新函式正確進行剖析。
Gollum 事件承載
Gollum 事件的承載包含下列項目:
- 已更新的頁面。 每個頁面都包含下列資訊:
page_name
頁面的名稱。title
目前的頁面標題。action
在頁面上執行的動作:建立或編輯。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 事件。