Hizmet kancaları için özel bir tüketici oluşturun

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Azure DevOps projenizdeki olaylar hakkında dış sistemlere bildirim göndermek için hizmet kancalarını kullanın. Özel tüketici uzantısı, belirli olaylar gerçekleştiğinde yapılandırdığınız uç noktaya bir HTTP POST gönderir.

Tavsiye

Yeni bir Azure DevOps uzantısı başlatıyorsanız, önce bu bakımlı örnek koleksiyonları deneyin; bunlar geçerli ürün derlemeleriyle çalışır ve modern senaryoları kapsar (örneğin, çekme isteği sayfalarına sekme ekleme).

Kuruluşunuzda bir örnek çalışmıyorsa, bunu kişisel bir kuruluşa veya test kuruluşuna yükleyin ve uzantı bildiriminin hedef kimliklerini ve API sürümlerini geçerli belgelerle karşılaştırın. Başvuru ve API'ler için bkz:

Bu makale, örnek bir tüketici hizmeti uzantısının nasıl oluşturulacağını gösterir. Örnek tüketici:

  • Üç Git olayını dinler: kod gönderildi, çekme isteği oluşturuldu ve çekme isteği güncelleştirildi
  • Yapılandırılabilir uç nokta URL'sine olay yükünü içeren bir HTTP POST gönderir

Kod gönderme ve çekme isteği olayları için HTTP iletileri gönderen örnek bir tüketici hizmetini gösteren diyagram.

Kaynağın tamamı için bkz. Uzantı örneği GitHub deposu. Tüm kullanılabilir olay türleri için Hizmet kancası olay türleri'ne bakın.

Tavsiye

En son uzantı geliştirme kılavuzu için, tema oluşturma ve VSS.SDK'den geçiş dahil, Azure DevOps Uzantısı SDK geliştirici portalına bakın.

Hizmet kancaları nasıl çalışır?

Hizmet kancalarının üç bileşeni vardır:

  • Yayımcılar "kod gönderildi" veya "çekme isteği oluşturuldu" gibi olayları yayar.
  • Abonelikler belirli olayları eylemlerle eşleştirilir.
  • Tüketiciler , HTTP POST gönderme gibi çalıştırılacak eylemleri tanımlar.

Servis kancası akışını gösteren diyagram: Yayımcılar olayları gönderir, abonelikler olayları eşleştirir ve eylemler bir olay abonelikle eşleştiğinde çalıştırılır.

Bu makalede, uzantı özel bir tüketici sınıfını uygular. Eşleşen bir olay gerçekleştiğinde tüketici, olay yükünü abonelikte yapılandırılmış uç nokta URL'sine içeren bir HTTP POST gönderir.

Uzantıyı oluşturma

1. Projeyi ayarlama

Uzantı projenizi oluşturun. Yönergeler için bkz . Web uzantısı geliştirme.

2. Tüketici katkısını ekleyin

Bildirim dosyanıza (vss-extension.json ) tüketici katkısını ekleyin. Aşağıdaki örnekte hizmet kancası tüketicisi ile eksiksiz bir bildirim gösterilmektedir:

{
    "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"
                        }
                    }
                ]
            }
        }
    ]
}

Uyarı

publisher Özelliğini yayımcı kimliğiniz ile eşleşecek şekilde güncelleştirin.

Dizi contributions kilit bölümdür. Her katkıyı tanımlar:

  • Tür: ms.vss-servicehooks.consumer — bir tüketici hizmetini kaydeder
  • Hedef: ms.vss-servicehooks.consumers — tüketici hizmetleri koleksiyonu
  • Özellikler: Girişler ve eylemler de dahil olmak üzere kullanıcı yapılandırması (bkz. özellik başvurusu)

3. Paketle, yayımla ve test et

Uzantıyı paketleyip Azure DevOps kuruluşunuzda yayımlayın. Ardından, çalıştığını doğrulamak için özel tüketici bileşenini kullanan bir servis kancası aboneliği oluşturun.

Mülk referansı

Tüketici özellikleri

Mülkiyet Açıklama
kimlik Tüketici hizmetinin benzersiz kimliği.
isim Kullanıcılar webhook abonelikleri oluşturduklarında gösterilen görünen ad.
Açıklama Tüketici hizmetini açıklar.
bilgiUrl Kullanıcıların uzantı hakkında daha fazla bilgi edinebileceği URL.
girdiTanımlayıcılar Kullanıcıların abonelik oluştururken sağladığı girişler (örneğin, bir URL uç noktası).
eylemler Olaylar gerçekleştiğinde yapılması gereken eylemler ve her eylemi tetikleyen olay türleri.

Eylem özellikleri

Dizideki actions her eylem aşağıdaki özelliklere sahiptir:

Mülkiyet Açıklama
kimlik Eylem için benzersiz kimlik.
isim Eylemin görünen adı.
Açıklama Eylemin ne yaptığının açıklaması.
DesteklenenOlayTürleri Bu eylemi tetikleyen olay türü kimliklerinin dizisi. Kullanılabilir türler için bkz Hizmet kancası olay türleri.
publishEvent.url HTTP POST'unu alan uç nokta URL'si. Abonelik oluşturulurken kullanıcıların sağladığı değerlerle {{{inputId}}} yerine koymak için üçlü ayraç Mustache söz dizimini (inputDescriptors) kullanın.

Sonraki adım