分享方式:


建立服務勾點的自定義取用者

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

使用服務攔截時,您可以通知第三方系統有關項目中發生的事件。 您可以使用自定義取用者,將 HTTP 訊息傳送至延伸模組指令清單中定義的端點。

本文會逐步解說開發實作範例取用者服務的延伸模組,其中包含下列事件和動作。

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

注意

在本文中,我們會將專案的主目錄稱為「首頁」。

範例取用者服務

如需詳細資訊,請參閱 擴充功能範例 GitHub 存放庫。 如需您可以做為自定義取用者延伸模組觸發程式的所有支援事件清單,請參閱 事件類型清單。

提示

請參閱使用 Azure DevOps 擴充功能 SDK 進行擴充功能開發的最新檔。

服務勾點的運作方式

服務攔截 發行者會 定義一組 事件訂閱會接聽並等候事件,並在觸發事件時定義 動作。

服務勾點圖表

這是所有服務攔截實作運作方式的一般描述。 在我們的案例中,我們會指定延伸模組所定義的取用者,以及事件發生時所指定的動作。

建立延伸模組

  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)
  • 每種參與類型特有的屬性

取用者具有下列屬性。

屬性 說明
id 取用者服務的唯一標識碼。
NAME 自定義取用者的名稱,在服務勾點訂用帳戶建立期間可見。
description 描述您的取用者服務。
informationUrl 尋找延伸模組的詳細資訊。
inputDescriptors 使用取用者服務建立訂用帳戶的使用者所要使用的輸入。
動作 描述要採取的動作,以及哪些事件會觸發這些動作。

取用者的動作具有下列屬性:

屬性 說明
id 動作服務的標識碼。
NAME 動作的名稱。
description 動作的詳細描述。
supportedEventTypes 可以使用此動作的觸發程式類型數位。 如需詳細資訊,請參閱 事件類型清單。
publishEvent.url HTTP 訊息傳送至其中的 URL。 它可以由 inputDescriptors 所提供的值進行範本化。 其實際值會在建立訂用帳戶時由用戶定義。
  1. 將您的擴充功能部署至 Azure DevOps 組織,並加以測試。

下一步