다음을 통해 공유


웹후크

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

이 문서에서는 웹후크 및 Azure DevOps 프로젝트에 대해 웹후크를 설정하는 방법을 설명합니다. 웹후크는 퍼블릭 엔드포인트가 있는 모든 서비스에 Azure DevOps 이벤트의 JSON 표현을 보내는 방법을 제공합니다.

참고 항목

Azure DevOps는 서비스 후크를 설정하거나 외부 서비스와 통합하는 데 비용을 청구하지 않습니다. 해당 서비스와 관련된 가격 책정은 특정 서비스의 사이트를 참조하세요.

필수 조건

Azure DevOps 조직의 웹후크를 관리하려면 다음 필수 구성 요소가 필요합니다.

  • 조직의 소유자 또는 프로젝트 컬렉션 관리자 역할입니다.

  • 조직의 프로젝트 및 Azure DevOps 이벤트를 보내려는 공용 HTTP 또는 HTTPS 엔드포인트가 있는 서비스입니다.

    Important

    HTTPS 엔드포인트만 사용하는 것이 좋습니다. HTTP는 이벤트 페이로드에서 암호화되지 않은 인증 헤더를 포함하여 개인 데이터를 보낼 가능성이 있습니다. 웹후크에서 기본 인증에 HTTPS를 사용해야 합니다.

서비스에 JSON 표현 보내기

  1. Azure DevOps 프로젝트에서 프로젝트 설정>서비스 후크https://<organization-name>/<project-name>/_settings/serviceHooks이동합니다.

    프로젝트 설정의 서비스 후크 선택 스크린샷

  2. 서비스 후크 페이지에서 아이콘 또는 구독 만들기를 + 선택합니다.

    서비스 후크 페이지에서 구독 만들기를 선택하는 스크린샷

  3. 서비스 화면에서 웹 후크를 선택한 다음, 다음을 선택합니다.

    서비스 페이지에서 웹 후크를 선택하는 스크린샷

  4. 트리거 화면에서 웹후크를 트리거할 Azure DevOps 이벤트를 선택하고 구성한 다음, 다음을 선택합니다. Azure DevOps 소비자가 게시한 JSON 페이로드에 대한 자세한 내용은 서비스 후크 이벤트를 참조하세요.

    트리거 이벤트를 선택하고 구성하는 스크린샷

  5. 작업 화면에서 대상 URL 및 이벤트가 발생할 때 수행할 작업을 구성합니다. 보낼 리소스 세부 정보, 보낼 메시지 및 보낼 자세한 메시지에 대한 자세한 내용은 보낼 리소스 세부 정보를 참조하세요.

    참고 항목

    웹후크는 localhost(루프백) 또는 특수 범위 IPv4/IPv6 주소를 대상으로 할 수 없습니다.

  6. 테스트를 선택하여 서비스 후크 구독을 테스트합니다.

    작업 대화 상자를 구성하는 스크린샷.

  7. 테스트가 성공적으로 완료되면 알림 화면을 닫은 다음 작업 화면에서 마침선택합니다.

    서비스 후크 구독에 대한 테스트 결과 스크린샷

  8. 이제 웹후크가 설정됩니다. 대상 서비스로 이동하여 JSON 표현을 봅니다.

    JSON 표현을 보는 스크린샷.

프로그래밍 방식으로 웹후크를 만들 수도 있습니다. 자세한 내용은 프로그래밍 방식으로 서비스 후크 구독 만들기를 참조 하세요.

보낼 리소스 세부 정보

보낼 리소스 세부 정보, 보낼 메시지 및 작업 창에서 설정을 보낼 자세한 메시지는 보낼 JSON 페이로드의 크기를 제어합니다. 전송할 리소스 세부 정보는 보낼 리소스의 양을 제어합니다. 기본값은 모두이지만 URL, ID 또는 없음과 같은 키 필드만 보내는 최소값을 보내도록 선택할 수도 있습니다.

NoneMinimal 은 메시지 또는 자세한 메시지 자체에 의존하기 때문에 호출자가 리소스에 대한 많은 정보나 정보가 필요하지 않은 시나리오에서 유용합니다. NoneMinimal 은 보안상의 이유로도 유용합니다. 호출자는 Azure DevOps Services로 다시 호출하고 일반적인 보안 및 권한 검사를 통해 리소스에 대한 자세한 내용을 확인해야 합니다.

다음 샘플 JSON은 리소스에 대한 최소 세부 정보를 보여줍니다.

   {
       "eventType": "git.push",
       ...
       "messages": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "detailedMessage": {
           "text": "...",
           "html": "...",
           "markdown": "..."
       },
       "resource": {
           "id": "...",
           "url": "https://...",
           "name": "...",
           "field1:": "..."
       }
   }