Azure Devops запускает запрос, используя ссылку «Integrated in Build» - PullRequest
0 голосов
/ 18 июня 2020

Я ищу способ получить информацию, содержащуюся в разделе « Разработка » заявки (Задача, Ошибка), а точнее « Интегрировано в Сборку » значение ссылки, которое будет использоваться в запросе:

enter image description here

введите описание изображения здесь

Выполнение этого запроса ничего не возвращает (множество этих рабочих элементов содержат действительные ссылки, установленные в «Интегрировано в сборку»). Если я удалю поле ссылки « Integrated in Build », я получу список рабочих элементов.

Любая помощь приветствуется.

Azure Devops , 2019 на прем .

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Вы не можете использовать тип ссылки Integrated in Build в запросах рабочего элемента, потому что эта ссылка не на рабочий элемент. В запросах рабочих элементов вы можете использовать только фильтры для ссылок и полей рабочих элементов. В нашем проекте Azure DevOps Services мы добавляем настраиваемый шаг PowerShell в сборки CI. На этом этапе номер сборки добавляется в поле Integration Build рабочих элементов, связанных в GIT commit:

$user = ""
$token = "$(System.AccessToken)"
$teamProject = "$(System.TeamProject)"
$orgUrl = "$(System.CollectionUri)"
$buildDefinitionName = "$(Build.DefinitionName)"
$buildNumber = "$(Build.BuildNumber)"
$repoName = "$(Build.Repository.Name)"

$bodyWorkItemInt = "[{op: `"add`", path: `"/fields/Microsoft.VSTS.Build.IntegrationBuild`", value: `"{value}`"}]"

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$uriSearchCommit = "$orgUrl/$teamProject/_apis/git/repositories/$repoName/commits?api-version=5.1&searchCriteria.toCommitId={commitId}&searchCriteria.fromCommitId={commitId}&searchCriteria.includeWorkItems=true"

$last_commit = & git show --format=%H HEAD
Write-Host $last_commit

if ($last_commit.Count -gt 0)
{
    $uriSearchCommit = $uriSearchCommit -replace "{commitId}", $last_commit[0]

    Write-Host $uriSearchCommit

    $resultCommit = Invoke-RestMethod -Uri $uriSearchCommit -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} 

    if ($resultCommit.count -eq 1)
    {       

        if ($resultCommit[0].value[0].workItems.Count -gt 0)
        {
            foreach ($workItem in $resultCommit[0].value[0].workItems)
            {       
                Write-Host "Work item:" $workItem 

                $resultWorkItem = Invoke-RestMethod -Uri $workItem.url -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}                

                $int_value = $buildDefinitionName + "_" + $buildNumber

                if ($resultWorkItem.fields.'Microsoft.VSTS.Build.IntegrationBuild' -ne $null)
                {                    
                    if ($resultWorkItem.fields.'Microsoft.VSTS.Build.IntegrationBuild'.Contains($buildDefinitionName))
                    {
                        Write-Host "Work item contains the label:" $buildDefinitionName
                        $int_value = "" 
                    }
                    else
                    {
                        $int_value += ";" + $resultWorkItem.fields.'Microsoft.VSTS.Build.IntegrationBuild'
                    }
                }

                if ($int_value -ne "")
                {
                    $bodyWorkItemInt = $bodyWorkItemInt -replace "{value}", $int_value

                    $uriUpdateWI = "$orgUrl/$teamProject/_apis/wit/workitems/{id}?api-version=5.1" -replace "{id}", $resultWorkItem.id

                    Invoke-RestMethod -Uri $uriUpdateWI -Method Patch -ContentType "application/json-patch+json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $bodyWorkItemInt 
                }
            }
        }
    }
}

Затем вы можете искать номер сборки в поле Integration Build с помощью запроса рабочего элемента.

0 голосов
/ 22 июня 2020

Первое, что необходимо уточнить, - это то, что поле Integrated in Build, которое вы выбрали в запросе, не является действительными ссылками на сборку в разработке.

введите описание изображения здесь

Кроме того, запрос получает рабочие элементы и не может вернуть информацию о ссылке на разработку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...