기여 모델

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

확장은 기여 제공하고 다른 확장에서 연결하는 방법을 정의하여 시스템에 새로운 기능을 추가합니다. 기여 유형은 시스템에 추가할 수 있는 항목을 정의합니다. 기여는 기여 유형의 특정 인스턴스입니다. 예를 들어 hub 핵심 Microsoft 제공 확장에서 정의한 기여 유형입니다. Explorer 빌드 허브 그룹 아래의 허브는 특정 유형의 hub기여입니다.

자세한 내용은 다음 참조 문서를 참조하세요.

기여 형식

기여 유형은 해당 형식의 시스템에 대한 모든 기여 준수해야 하는 계약을 정의합니다. 기여 유형은 다른 기여 유형에서 확장할 수도 있습니다. 기여 형식의 다음 예제는 해당 형식의 인스턴스에 의해 설정된 속성을 정의합니다.

  • hub
  • action
  • build-task

각 속성 정의는 다음 측면을 지정합니다.

  • 속성 형식(예: 문자열, 부울 등)
  • 속성이 필요한지 여부
  • 기여로 지정하지 않은 경우 기본값입니다(선택 사항).

예시

확장 매니페스트의 기여 형식 선언 예는 다음과 같습니다.

{
    ...
    "contributionTypes": [
        {
            "id": "hub",
            "name": "Web Access Hub",
            "description": "A hub that appears in the hubs menu at the top of web pages.",
            "properties": {
                "name": {
                    "description": "The text to display for the hub",
                    "type": "string",
                    "required": true
                },
                "uri": {
                    "description": "URI of the contents of the hub page",
                    "type": "string",
                    "required": true
                },
                "order": {
                    "description": "An optional ordering value which can indicate in which position to place the hub within the hub group",
                    "type": "integer"
                }
				...
            }
        }
    ]
}

참여

기여는 기여 유형의 인스턴스입니다. 예를 들어 Queries 작업 허브 그룹 아래의 허브는 형식의 기여이며 Publish Test Results 빌드 작업은 형식 hubbuild-task의 기여입니다.

모든 기여 형식을 지정하고 해당 기여 형식에 필요한 속성의 값을 지정해야 합니다.

예시

확장 매니페스트의 허브 기여 선언 예는 다음과 같습니다.

{
    "contributions": [
        {
            "id": "build-explorer-hub",
            "type": "ms.vss-web.hub",
            "targets": [
                ".build-hub-group"
            ],
            "properties": {
                "name": "Explorer",
                "uri": "/_build",
                "order": 22
            }
        }
    ]
}

대상 기여

기여는 하나 이상의 다른 기여 대상으로 지정하여 기여와 각 대상 간의 관계를 만듭니다. 시스템은 런타임에 대상에 대한 기여 검색할 수 있습니다. 예를 들어 기여()는 hub 특정 hub-group 기여(ExplorerBuild)를 대상으로 할 수 있습니다.

{
    "id": "build-explorer-hub",
    "type": "ms.vss-web.hub",
    "targets": [
        ".build-hub-group"
    ]
}

허브 그룹이 렌더링되면 시스템은 허브 그룹을 대상으로 하는 모든 허브 기여 쿼리하여 렌더링할 허브를 알 수 있습니다.

기여 및 형식 식별

모든 기여 및 기여 유형에는 선언된 확장 내에서 고유한 ID가 있어야 합니다.

전체 기여 식별자에는 점 . 으로 구분하는 다음 항목이 포함됩니다.

  • 게시자 ID
  • 확장 ID
  • 기여/형식 ID

예를 들어 다음 ms.vss-web.hub 기여에 대한 전체 식별자는 다음과 같습니다.

  • 게시자 ID: ms
  • 확장 ID: vss-web
  • 기여/형식 ID: hub

동일한 확장 내에서 다른 기여 또는 기여 유형에 대한 기여 참조에 대해 확장 매니페스트 내에서 상대 기여 참조를 사용할 수 있습니다. 이 경우 게시자 및 확장 ID는 포함되지 않으며 ID는 점 . 뒤에 기여 ID가 잇습니다. 예를 들어 .hub 이전에 멘션 확장 내에서 vss-web 바로 가기ms.vss-web.hub로 사용할 수 있습니다.