서비스 엔드포인트 만들기
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
서비스 엔드포인트는 Azure DevOps가 외부 시스템 또는 서비스에 연결하는 방법으로, Azure DevOps에서 안전하게 저장되는 속성 번들로, 다음 속성을 포함하지만 제한되지는 않습니다.
- 서비스 이름
- 설명
- 서버 URL
- 인증서 또는 토큰
- 사용자 이름 및 암호
확장은 서비스 엔드포인트를 사용하여 저장된 세부 정보를 획득하여 해당 서비스에 필요한 작업을 수행할 수 있습니다. 이 가이드에 따라 새 서비스 엔드포인트 기여를 만들고 확장에서 사용합니다.
팁
Azure DevOps 확장 SDK를 사용하여 확장 개발에 대한 최신 설명서를 확인하세요.
작업 개요
다음 항목을 포함하는 Azure DevOps에 대한 예제 확장을 만들어 서비스 엔드포인트를 개발할 수 있습니다.
- 데이터 원본이 있는 사용자 지정 서비스 엔드포인트로, 빌드 작업 또는 대시보드 위젯이 엔드포인트에 정의된 서비스/서버에서 REST 엔드포인트를 호출할 수 있습니다.
- REST 엔드포인트 데이터 원본에서 채워진 값이 있는 서비스 엔드포인트 및 선택 목록이라는 두 가지 속성을 정의하는 빌드 작업입니다.
참고 항목
서비스 엔드포인트를 만들 때는 조직 수준이 아니라 프로젝트 수준에 있습니다.
이 작업을 완료하는 데 관련된 단계는 다음과 같습니다.
참고 항목
이 자습서에서는 프로젝트의 홈 디렉터리를 "home"으로 참조합니다.
매니페스트 파일을 만듭니다. vss-extension.json
매니페스트 파일은 사용자 지정 엔드포인트를 정의하고 빌드 작업에 대한 task.json 매니페스트에 대한 링크를 정의합니다.
이 문서에서 매니페스트 파일 만들기는 다음 세 부분으로 구분됩니다.
기본 매니페스트 파일 만들기
확장의 디렉터리에 json 파일(vss-extension.json
예: ) home
을 만듭니다.
{
"manifestVersion": 1,
"id": "service-endpoint-tutorial",
"version": "0.1.1",
"name": "Sample extension that leverages a service endpoint",
"description": "A sample Azure DevOps extension which shows how to create a custom endpoint and dynamic build task parameters taking value from a REST API.",
"publisher": "francistotten",
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
],
"files": [
{
"path": "BuildTaskFolder"
}
]
}
참고 항목
publisher
특성을 업데이트합니다. 이 BuildTaskFolder
경로는 결국 빌드 작업 파이프라인을 배치할 경로입니다.
사용자 지정 엔드포인트 기여 추가
기본 매니페스트 콘텐츠의 배열 아래에 targets
다음 contributions
배열을 추가합니다.
Important
서비스 연결 매개 변수는 서비스 연결 ID로 가져와야 합니다.
"contributions": [
{
"id": "service-endpoint",
"description": "Service endpoint type for Fabrikam connections",
"type": "ms.vss-endpoint.service-endpoint-type",
"targets": [ "ms.vss-endpoint.endpoint-types" ],
"properties": {
"name": "fabrikam",
"displayName": "Fabrikam server connection",
"url": {
"displayName": "Server Url",
"helpText": "Url for the Fabrikam server to connect to."
},
"dataSources": [
{
"name": "Fabrikam Projects",
"endpointUrl": "{{endpoint.url}}api/projects/index",
"resultSelector": "jsonpath:$[*].nm"
}
],
"authenticationSchemes": [
{
"type": "ms.vss-endpoint.endpoint-auth-scheme-token"
},
{
"type": "ms.vss-endpoint.endpoint-auth-scheme-basic",
"inputDescriptors": [
{
"id": "username",
"name": "Username",
"description": "Username",
"inputMode": "textbox",
"validation": {
"isRequired": false,
"dataType": "string"
}
},
{
"id": "password",
"name": "Password",
"description": "Password",
"inputMode": "passwordbox",
"isConfidential": true,
"validation": {
"isRequired": false,
"dataType": "string"
}
}
]
}
],
"helpMarkDown": "<a href=\"url-to-documentation\" target=\"_blank\"><b>Learn More</b></a>"
}
},
],
서비스 기여를 성공적으로 추가한 경우 조직에 새 서비스 엔드포인트를 추가하려고 할 때 Fabrikam 엔드포인트가 표시됩니다.
Fabrikam 엔드포인트를 사용하여 서비스 엔드포인트를 만듭니다.
팁
authenticationSchemes 없이 inputDescriptor를 추가할 수 있습니다. 자세한 내용은 InputDescriptor 인터페이스를 참조 하세요.
빌드 작업 기여 추가
이전 단계의 contributions
배열 내에 다음 개체를 끝에 추가합니다.
{
"id": "build-task",
"description": "Task with a dynamic property getting data from an endpoint REST data source",
"type": "ms.vss-distributed-task.task",
"targets": [ "ms.vss-distributed-task.tasks" ],
"properties": {
"name": "BuildTaskFolder"
}
}
dataSource 엔드포인트 URL은 엔드포인트의 URL 또는 고정 URL 및 기타 값에서 계산됩니다. 이 자습서의 경우 이 REST 호출은 아무 것도 반환하지 않으며 서비스에 대해 수행하려는 REST 호출로 대체됩니다.
REST URL에 대한 엔드포인트 URL 이외의 다른 매개 변수(예: 일부 엔드포인트 속성)를 사용할 수 있습니다. 예를 들어 subscriptionId라는 엔드포인트에 속성이 있다고 가정하면 REST URL은 $(endpoint.subscription) 구문과 함께 사용할 수 있습니다.
빌드 작업 만들기
파일은 task.json
빌드 작업을 설명합니다.
task.json
디렉터리에 파일을 BuildTaskFolder
만듭니다. 이 폴더를 아직 만들지 않은 경우 지금 만듭니다.
{
"id": "6557a6d2-4caf-4247-99ea-5131286a8753",
"name": "build-task",
"friendlyName": "Build Task that uses the service endpoint",
"description": "Task with a dynamic property getting data from an endpoint REST data source",
"author": "francistotten",
"helpMarkDown": "Replace with Markdown to show in help",
"category": "Build",
"visibility": [
"Build",
"Release"
],
"demands": [],
"version": {
"Major": "0",
"Minor": "1",
"Patch": "1"
},
"minimumAgentVersion": "1.95.0",
"instanceNameFormat": "Service Endpoint Build Task $(project)",
"inputs": [
{
"name": "FabrikamService",
"type": "connectedService:Fabrikam",
"label": "Fabrikam service/server end point",
"defaultValue": "",
"required": true,
"helpMarkDown": "Select the Fabrikam end point to use. If needed, select 'manage', and add a new service endpoint of type 'Fabrikam server connection'"
},
{
"name": "project",
"type": "pickList",
"label": "Fabrikam Project",
"required": true,
"helpMarkDown": "Select the name of the Fabrikam Project to analyze.",
"properties": {
"EditableOptions": "True"
}
}
],
"dataSourceBindings": [
{
"target": "project",
"endpointId": "$(FabrikamService)",
"dataSourceName": "Fabrikam Projects"
}
],
"execution": {
"Node": {
"target": "sample.js",
"argumentFormat": ""
},
"PowerShell3": {
"target": "sample.ps1"
}
}
}
task.json 구성 요소
FabrikamService
입력 개체
이 필드는 connectedService:Fabrikam.connectedService 형식 중 첫 번째 형식이며 엔드포인트 형식이며 Fabrikam이 개체의 이름임을 표현합니다.
project
입력 개체
이 필드는 두 번째입니다. 선택 목록입니다.
- 이 필드는 REST 호출로 채워집니다.
- "project" 필드의 값은 사용자 지정 엔드포인트의 "Projects" REST 데이터 원본에서 가져옵니다.
- 배열에
dataSourceBindings
표현됩니다.- 대상은 채울 빌드 작업 필드의 이름입니다("프로젝트").
- endpointId는 사용자 지정 엔드포인트 유형을 포함하는 빌드 작업 필드의 이름입니다.
- REST 호출은 dataSourceName에 의해 선택됩니다.
빌드 태스크를 성공적으로 추가한 경우 이제 빌드 파이프라인에 작업을 추가할 때 빌드 태스크가 표시됩니다.
빌드 태스크를 파이프라인에 추가한 후에는 만든 Fabrikam 엔드포인트를 볼 수 있는지 확인합니다. 실제 서비스를 사용하지 않으므로 이 자습서의 프로젝트 드롭다운은 비어 있습니다. Fabrikam을 서비스로 바꾸면 빌드 작업 내에서 동적 데이터를 사용하기 위해 Projects 호출을 사용자 고유의 REST API 호출로 바꿉다.
인증
서비스 엔드포인트의 인증 체계는 외부 서비스에 연결하는 데 사용할 자격 증명을 결정합니다. 자세한 내용과 다음 인증 체계를 보려면 인증 체계 설명서를 참조 하세요.
- 인증 유형
- 토큰 기반 인증
- 인증서 기반 인증
- 인증 없음