Erstellen eines benutzerdefinierten Consumers für Diensthaken
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Mit Diensthaken können Sie Drittanbietersysteme über Ereignisse benachrichtigen, die in Ihrem Projekt auftreten. Sie können einen benutzerdefinierten Consumer verwenden, um eine HTTP-Nachricht an den Endpunkt zu senden, der im Manifest der Erweiterung definiert ist.
In diesem Artikel wird die Entwicklung einer Erweiterung beschrieben, die einen Beispiel-Consumerdienst implementiert, der die folgenden Ereignisse und Aktionen enthält.
- Unterstützte Ereignisse, die die folgenden Aktionen auslösen:
- Code gepusht
- Erstellter Pull Request
- Pull Request aktualisiert
- Unterstützte Aktionen, die ausgeführt werden sollen, wenn Ereignisse auftreten:
- Aktion ausführen (HTTP-Nachricht senden)
Hinweis
In diesem Artikel wird das Basisverzeichnis für Ihr Projekt als "Home" bezeichnet.
Weitere Informationen finden Sie im GitHub-Repository "Erweiterungsbeispiel". Eine Liste aller unterstützten Ereignisse, die Sie als Trigger für Ihre benutzerdefinierte Consumererweiterung verwenden können, finden Sie unter Liste der Ereignistypen.
Tipp
Sehen Sie sich unsere neueste Dokumentation zur Erweiterungsentwicklung mithilfe des Azure DevOps-Erweiterungs-SDK an.
Funktionsweise von Diensthaken
Service Hook-Herausgeber definieren eine Reihe von Ereignissen. Abonnements lauschen und warten auf die Ereignisse und definieren Aktionen für den Zeitpunkt des Auslösens des Ereignisses.
Dies ist eine allgemeine Beschreibung der Funktionsweise all unserer Service Hook-Implementierungen. In unserem Fall geben wir unseren durch eine Erweiterung definierten Consumer sowie die angegebene Aktion für den Zeitpunkt des Eintretens eines Ereignisses an.
Erstellen der Erweiterung
Erfahren Sie, wie Sie Ihre Erweiterung von Grund auf neu erstellen.
Fügen Sie ihrer grundlegenden Manifestdatei den spezifischen Beitrag für die implementierung eines benutzerdefinierten Consumers hinzu. Sehen Sie sich das folgende Beispiel an, wie Ihr Manifest nach dem Hinzufügen des Beitrags aussehen soll.
{
"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"
}
}
]
}
}
]
}
Hinweis
Denken Sie daran, die publisher
Eigenschaft zu aktualisieren.
Für jeden Beitrag in Ihrer Erweiterung definiert das Manifest die folgenden Elemente.
- Art des Beitrags – Verbraucherdienst (ms.vss-servicehooks.consumer) in diesem Fall
- Beitragsziel – Verbraucherdienste (ms.vss-servicehooks.consumers) in diesem Fall
- Eigenschaften, die für jeden Beitragstyp spezifisch sind
Consumer verfügen über die folgenden Eigenschaften.
Eigenschaft | BESCHREIBUNG |
---|---|
id | Eindeutige ID für Ihren Consumerdienst. |
name | Name des benutzerdefinierten Consumers, der während der Erstellung eines Diensthakenabonnements angezeigt wird. |
Beschreibung | Beschreibt Ihren Consumerdienst. |
informationUrl | Hier finden Sie weitere Informationen zu Ihrer Erweiterung. |
inputDescriptors | Eingaben, die von Benutzern verwendet werden sollen, die Abonnements mit dem Consumerdienst erstellen. |
Aktionen | Beschreibt die auszuführenden Aktionen und welche Ereignisse diese Aktionen auslösen. |
Aktionen für Ihren Consumer verfügen über die folgenden Eigenschaften:
Eigenschaft | BESCHREIBUNG |
---|---|
id | ID für Ihren Aktionsdienst. |
name | Name der Aktion. |
Beschreibung | Detaillierte Beschreibung der Aktion. |
supportedEventTypes | Array von Triggertypen, für die diese Aktion verwendet werden kann. Weitere Informationen finden Sie unter Liste der Ereignistypen. |
publishEvent.url | URL, an die eine HTTP-Nachricht gesendet wird. Sie kann anhand von Werten vorlagen, die von inputDescriptors bereitgestellt werden. Ihre tatsächlichen Werte werden vom Benutzer definiert, wenn das Abonnement erstellt wird. |
- Stellen Sie Ihre Erweiterung in Ihrer Azure DevOps-Organisation bereit, und testen Sie sie.