Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
使用服務鉤子來通知非 Microsoft 系統有關在您的專案中發生的事件。 自訂取用者會將 HTTP 訊息傳送至延伸模組資訊清單中定義的端點。
小提示
如果您要啟動新的 Azure DevOps 延伸模組,請先嘗試這些維護的範例集合,它們可與目前的產品組建搭配使用,並涵蓋新式案例 (例如,在提取要求頁面上新增索引標籤) 。
- Azure DevOps 延伸模組範例 (GitHub) — 示範常見延伸模組模式的精簡入門範例: https://github.com/microsoft/azure-devops-extension-sample
- Azure DevOps 延伸模組範例 (舊版集合和貢獻指南) — 安裝以檢查 UI 目標,或檢視來源: https://marketplace.visualstudio.com/items/ms-samples.samples-contributions-guide 和 https://github.com/Microsoft/vso-extension-samples/tree/master/contributions-guide
- Microsoft Learn 範例(瀏覽 Azure DevOps 範例)— Microsoft 文件中精選的最新範例:/samples/browse/?terms=azure%20devops%20extension
如果範例在您的組織中無法運作,請將它安裝到個人或測試組織中,並將擴充功能資訊清單的目標識別碼和 API 版本與現有的文件進行比較。如需參考和 API,請參見:
本文將逐步介紹開發實作 範例消費者服務的擴充套件,其中包含下列事件和動作。
- 觸發下列動作的支援事件:
- 程式碼已推送
- 已建立提取要求
- 已更新提取要求
- 事件發生時要採取的支援動作:
- 傳送 HTTP 訊息
備註
本文將專案的主目錄稱為 主目錄。
如需詳細資訊,請參閱 擴充功能範例 GitHub 存放庫。 如需所有您可以用作自訂使用者擴充功能觸發程序的支援事件清單,請參閱事件類型清單。
小提示
請參閱使用 Azure DevOps 擴充功能 SDK 開發擴充功能的最新文件。
服務鉤子的運作方式
服務掛鉤 發佈者 定義一組 事件。 訂閱 接聽 事件,並定義在事件觸發時執行的 動作。
此圖表顯示一般服務掛勾流程:發布者發出事件、訂閱比對事件,以及發生比對時執行動作。 在本文的範例中,擴充套件會實作用戶。 發生支援的事件時,取用者設定的動作會將 HTTP 訊息傳送至您在擴充功能資訊清單中指定的端點。
建立延伸模組
將自訂消費者實作的特定貢獻新增至您的基本 指令清單檔。 請參閱下列範例,瞭解新增貢獻後的清單外觀。
{
"manifestVersion": 1,
"id": "samples-service-hooks-consumer",
"version": "0.1.2",
"name": "Service Hooks Sample",
"description": "A simple extension that demonstrates how to contribute a consumer service into service hooks.",
"publisher": "fabrikam",
"public": false,
"icons": {
"default": "images/logo.png"
},
"scopes": [],
"files": [
{
"path": "images",
"addressable": true
}
],
"content": {
"details": {
"path": "readme.md"
}
},
"categories": [
"Developer samples"
],
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
],
"contributions": [
{
"id": "consumer",
"type": "ms.vss-servicehooks.consumer",
"targets": [
"ms.vss-servicehooks.consumers"
],
"properties": {
"id": "consumer",
"name": "Sample Consumer",
"description": "Sample consumer service",
"informationUrl": "https://aka.ms/vsoextensions",
"inputDescriptors": [
{
"id": "url",
"isRequired": true,
"name": "URL",
"description": "URL to post event payload to",
"inputMode": "textbox"
}
],
"actions": [
{
"id": "performAction",
"name": "Perform action",
"description": "Posts a standard event payload",
"supportedEventTypes": [
"git.push",
"git.pullrequest.created",
"git.pullrequest.updated"
],
"publishEvent": {
"url": "{{{url}}}",
"resourceDetailsToSend": "all",
"messagesToSend": "all",
"detailedMessagesToSend": "all"
}
}
]
}
}
]
}
備註
請記得更新 publisher 屬性。
針對擴充功能中的每個貢獻,配置檔會定義下列項目。
- 貢獻類型 - 消費者服務 (ms.vss-servicehooks.consumer)在此情況下。
- 貢獻目標 - 消費者服務(ms.vss-servicehooks.consumers)在本例中。
- 特定於每種貢獻類型的屬性。
消費者具有下列屬性。
| 房產 | 說明 |
|---|---|
| 識別碼 | 消費者服務的唯一識別碼。 |
| 名稱 | 自定義使用者的名稱,在服務鉤子訂閱創建過程中可見。 |
| 說明 | 描述您的消費者服務。 |
| informationUrl | 尋找擴充套件的詳細資訊。 |
| 輸入描述符 | 使用取用者服務建立訂用帳戶的使用者所要使用的輸入。 |
| 行為 | 描述要採取的動作,以及哪些事件會觸發這些動作。 |
使用者的動作具有以下屬性:
| 房產 | 說明 |
|---|---|
| 識別碼 | 動作服務的標識碼。 |
| 名稱 | 動作的名稱。 |
| 說明 | 動作的詳細描述。 |
| 支持的事件類型 (supportedEventTypes) | 可用於此動作的觸發類型陣列。 如需詳細資訊,請參閱 事件類型清單。 |
| publishEvent.url | 接收 HTTP 訊息的端點 URL。 您可以使用 inputDescriptors 的權杖來模板化此值;使用者在建立訂閱時提供實際的值。 |
- 將您的擴充功能部署至 Azure DevOps 組織,並加以測試。