다음을 통해 공유


서비스 후크에 대한 사용자 지정 소비자 만들기

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

서비스 후크를 사용하면 프로젝트에서 발생하는 이벤트에 대해 타사 시스템에 알릴 수 있습니다. 사용자 지정 소비자를 사용하여 확장 매니페스트에 정의된 엔드포인트에 HTTP 메시지를 보낼 수 있습니다.

이 문서에서는 다음 이벤트 및 작업을 포함하는 샘플 소비자 서비스를 구현하는 확장을 개발하는 방법에 대해 설명합니다.

  • 다음 작업을 트리거하는 지원되는 이벤트:
    • 코드 푸시됨
    • 끌어오기 요청이 만들어짐
    • 끌어오기 요청이 업데이트됨
  • 이벤트가 발생할 때 수행할 지원되는 작업:
    • 작업 수행(HTTP 메시지 보내기)

참고 항목

이 문서에서는 프로젝트의 홈 디렉터리를 "home"으로 지칭합니다.

샘플 소비자 서비스

자세한 내용은 확장 예제 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)
  • 각 기여 유형과 관련된 속성

소비자에는 다음과 같은 속성이 있습니다.

속성 Description
id 소비자 서비스에 대한 고유 ID입니다.
name 서비스 후크 구독을 만드는 동안 표시되는 사용자 지정 소비자의 이름입니다.
description 소비자 서비스에 대해 설명합니다.
informationUrl 확장에 대한 자세한 정보를 찾습니다.
inputDescriptors 소비자 서비스를 사용하여 구독을 만드는 사용자가 사용할 입력입니다.
actions 수행할 작업과 해당 작업을 트리거하는 이벤트에 대해 설명합니다.

소비자에 대한 작업에는 다음과 같은 속성이 있습니다.

속성 Description
id 작업 서비스에 대한 ID입니다.
name 작업의 이름입니다.
description 작업에 대한 자세한 설명입니다.
supportedEventTypes 이 작업을 사용할 수 있는 트리거 형식의 배열입니다. 자세한 내용은 이벤트 유형 목록을 참조 하세요.
publishEvent.url HTTP 메시지가 전송되는 URL입니다. inputDescriptors에서 제공하는 값으로 템플릿을 지정할 수 있습니다. 해당 실제 값은 구독을 만들 때 사용자가 정의합니다.
  1. Azure DevOps 조직에 확장을 배포하고 테스트합니다.

다음 단계