共用方式為


建立服務掛鉤的自定義消費者

Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

使用服務鉤子來通知非 Microsoft 系統有關在您的專案中發生的事件。 自訂取用者會將 HTTP 訊息傳送至延伸模組資訊清單中定義的端點。

小提示

如果您要啟動新的 Azure DevOps 延伸模組,請先嘗試這些維護的範例集合,它們可與目前的產品組建搭配使用,並涵蓋新式案例 (例如,在提取要求頁面上新增索引標籤) 。

如果範例在您的組織中無法運作,請將它安裝到個人或測試組織中,並將擴充功能資訊清單的目標識別碼和 API 版本與現有的文件進行比較。如需參考和 API,請參見:

本文將逐步介紹開發實作 範例消費者服務的擴充套件,其中包含下列事件和動作。

  • 觸發下列動作的支援事件:
    • 程式碼已推送
    • 已建立提取要求
    • 已更新提取要求
  • 事件發生時要採取的支援動作:
    • 傳送 HTTP 訊息

備註

本文將專案的主目錄稱為 主目錄

顯示一個範例消費者服務傳送 HTTP 訊息以進行程式碼推送和提取請求事件的圖表。

如需詳細資訊,請參閱 擴充功能範例 GitHub 存放庫。 如需所有您可以用作自訂使用者擴充功能觸發程序的支援事件清單,請參閱事件類型清單

小提示

請參閱使用 Azure DevOps 擴充功能 SDK 開發擴充功能的最新文件。

服務鉤子的運作方式

服務掛鉤 發佈者 定義一組 事件訂閱 接聽 事件,並定義在事件觸發時執行的 動作

顯示服務掛鉤流程的圖表:發行者發出事件、訂閱比對事件,以及當事件符合訂閱時執行動作。

此圖表顯示一般服務掛勾流程:發布者發出事件、訂閱比對事件,以及發生比對時執行動作。 在本文的範例中,擴充套件會實作用戶。 發生支援的事件時,取用者設定的動作會將 HTTP 訊息傳送至您在擴充功能資訊清單中指定的端點。

建立延伸模組

  1. 瞭解如何從頭開始建立延伸模組

  2. 將自訂消費者實作的特定貢獻新增至您的基本 指令清單檔。 請參閱下列範例,瞭解新增貢獻後的清單外觀。

{
    "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 的權杖來模板化此值;使用者在建立訂閱時提供實際的值。
  1. 將您的擴充功能部署至 Azure DevOps 組織,並加以測試。

後續步驟