Azure DevOps API를 사용하여 작업 항목 유형 복사
이 기사에서는 Azure DevOPs API를 사용하여 작업 항목을 복사하는 방법을 설명합니다. 설명서에는 새 프로세스 추가, 작업 항목 유형 추가, 그룹 추가 등의 기본 사항을 수행하는 방법이 나와 있지만 몇 가지 누락된 사항이 있습니다.
이것이 코드가 구성되는 방식입니다. 코드에 들어가기 전에 흐름을 이해하는 것이 좋을 것이라고 생각했습니다.
새 작업 항목 유형 만들기
대상 작업 항목 유형을 반복하고 누락된 페이지를 추가하여 새 작업 항목 유형에 대한 페이지를 만듭니다.
새 작업 항목 유형에 대한 단계 만들기
작업 항목에서 복사되지 않은 기본 단계 제거
대상 작업 항목 유형의 각 페이지를 반복합니다.
각 페이지의 각 섹션을 반복합니다.
각 섹션의 각 그룹을 통해 반복
각 그룹의 각 컨트롤을 통해 반복
새 작업 항목 유형에 필드 추가(컨트롤은 내가 본 필드 중 1개만 보유함)
주어진 섹션에 그룹 추가
지정된 그룹에 컨트롤 추가
새 작업 항목 유형이 생성되면 복사 중인 작업 항목에서 단계를 추가해야 합니다. 이렇게 하면 작업 항목 대상에서 추가된 상태와 함께 기본 작업 항목 유형이 제공됩니다. 기본적으로 작업 항목 유형이 생성되면 한 페이지와 네 개의 섹션이 있습니다. 왼쪽에서 오른쪽으로 처음 세 섹션은 페이지의 세 열을 반영합니다. 나는 아직 네 번째 섹션이 무엇인지 파악하지 못했습니다. 작업 항목 유형을 추가하면 필드를 더 쉽게 추가할 수 있습니다. 레이아웃의 각 페이지를 반복하고 필드를 추가하기만 하면 됩니다.
해결해야 할 문서화되지 않은 몇 가지 퍼즐 조각과 특별한 주의가 필요한 몇 가지 필드 유형이 있습니다. 기본적으로 System.Description 필드는 작업 항목 생성 페이지에 추가됩니다. 어떤 이유로 해당 필드의 이름을 변경한 경우 이 필드를 다른 필드와 다르게 처리해야 합니다. 설명 필드는 첫 번째 섹션의 첫 번째 그룹으로 표시됩니다. 이것은 가장 큰 계시이자 가장 발견하기 어려운 계시였습니다. 그 이유는 UI를 볼 때 설명 필드에 그룹이 없기 때문입니다. 따라서 여기서 진짜 문제는 여러 줄 텍스트 상자(HTML)라는 것입니다.
페이지의 다른 곳에 있는 여러 줄 텍스트 상자는 어떻습니까? 다시 말하지만, 모든 것이 그룹에 있어야 하지만 이 필드는 UI에서 볼 때 그룹에 있지 않습니다. 그래서 몇 시간 동안 fiddler 트래픽을 파헤친 후 여러 줄 텍스트 필드와 관련하여 문서화되지 않은 것을 찾을 수 있었습니다. 그룹을 만들고 여러 줄 필드를 그룹의 컨트롤로 추가해야 합니다. 이것은 내가 놓친 퍼즐의 piece이었습니다. 여러 줄 필드가 페이지에 배치되었을 때 전송된 요청을 찾았고 그들이 어디로 가고 있는지 파악할 수 있었습니다. 이제 그룹 추가에 대한 문서는 컨트롤이 요청의 일부가 될 수 있음을 보여주지만 여러 줄 텍스트 필드가 특별한 경우임을 지정하지는 않습니다.
그런 다음 이 코드 블록의 끝에 표시된 대로 API를 사용하여 그룹을 추가하기만 하면 됩니다.
# multi line text fields cannot be inside a group. they are their own group on the UI
if($grp.controls[0].controlType -eq "HtmlFieldControl")
{
isMultiLine = $true
# first add the field to the work item
$addCtl = @{
referenceName = $grp.controls[0].id
order = "$null"
readOnly = "$false"
label = $grp.label.Trim()
visible = "$true"
# must encapsulate true false in quotes to register
defaultValue = if($fld.type -eq "boolean")
{"$false"}
else {""}
required = if($fld.type -eq "boolean")
{"$true"}
else {"$false"}
$ctlJSON = ConvertTo-Json -InputObject $addCtl
# add field to work item type
# https://docs.microsoft.com/en-us/rest/api/azure/devops/processes/fields/add?view=azure-devops-rest-7.1
# POST https://dev.azure.com/{organization}/_apis/work/processes/{processId}/workItemTypes/{witRefName}/fields?api-version=7.1-preview.2
$field = $null
$fieldURL = $userParams.HTTP_preFix + "://dev.azure.com/" + $userParams.VSTSMasterAcct + "/_apis/work/processes/" + $proc.typeId + "/workitemTypes/" + $newWKItem.referenceName + "/fields?api-version=7.1-preview.2"
$field = Invoke-RestMethod -Uri $fieldURL -Method Post -ContentType "application/json" -Headers $authorization -Body $ctlJSON
Write-Host $field
# now add the Multi line field to the page in a group with no name
$addGroup = @{
Contribution = "$null"
height = "$null"
id = "$null"
inherited = "$null"
isContribution = "$false"
label = $grp.label.Trim()
visible = "$true"
order = "$null"
overridden = "$null"
controls = @( @{
contribution = "$null"
controlType = "$null"
height = "$null"
id = $grp.controls[0].id
inherited = "$null"
isContribution = "$false"
label = $grp.controls[0].label.Trim()
metadata = "$null"
order = "$null"
overridden = "$null"
visible = "$true"
watermark = "$null"
})
}
$grpJSON = ConvertTo-Json -InputObject $addGroup
# POST https://dev.azure.com/{organization}/_apis/work/processes/{processId}/workItemTypes/{witRefName}/layout/pages/{pageId}/sections/{sectionId}/groups?api-version=7.1-preview.1
$groupURL = $userParams.HTTP_preFix + "://dev.azure.com/" + $userParams.VSTSMasterAcct + "/_apis/work/processes/" + $proc.typeId + "/workitemtypes/" + $newWKItem.referenceName + "/layout/pages/" + $pgExists.id + "/sections/" + $newSection.id + "/groups?api-version=7.1-preview.1"
$group = Invoke-RestMethod -Uri $groupURL -Method Post -ContentType "application/json" -Headers $authorization -Body $grpJSON
Write-Host "Multi line field " $group
$newGrp = $group
}
Reference
이 문제에 관하여(Azure DevOps API를 사용하여 작업 항목 유형 복사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ishrat/copy-a-work-item-type-using-azure-devops-apis-4h7p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)