Значения полей DevOps Azure из списка сборок - PullRequest
0 голосов
/ 24 сентября 2019

Мы используем Azure DevOps 2019 on-prem в нашей фирме, и я хотел бы создать поле с опциями в нашем рабочем элементе Bug, и я хочу, чтобы оно было комбинированным, где значения собираются из всехОпределения сборки в рамках проекта.

Из проверки документации системы я не нашел ни одного варианта, как это сделать, и эфира, если было бы лучше запросить систему через API, или запроситьDB.

1 Ответ

1 голос
/ 24 сентября 2019

Я не думаю, что есть встроенная функция, подобная этой.

То, что вы можете сделать, - это создать строковое поле, которое берет значения из gloabllist, в globallist create в первомвремя для глобалиста с именем проекта, например:

<GLOBALLIST name="MyProject-builds">
</GLOBALLIST>

Теперь вы можете использовать PowerShell, чтобы получить определения сборки для этого проекта, и обновить этого глобалиста со значениями:

Param(
   [string]$collection = "http://tfs-server:8080/tfs/collection",
   [string]$project = "MyProject",
   [string]$filePath  = "C:\Globallist.xml"
)

$url = "$collection/$project/_apis/build/definitions?api-version=4.0"
$builds = (Invoke-RestMethod -Uri $url -Method Get -UseDefaultCredentials -ContentType application/json).value.name

witadmin exportgloballist /collection:$collection /f:$filePath
[xml]$gloabllist = Get-Content $filePath
$gloabllist.GLOBALLISTS.GLOBALLIST.Where({ $_.name -eq "$project-builds" }).LISTITEM | %{ $_.ParentNode.RemoveChild($_) | Out-Null }
$node = $gloabllist.GLOBALLISTS.GLOBALLIST.Where({ $_.name -eq "$project-builds" })
$builds.ForEach({

    $child = $gloabllist.CreateElement("LISTITEM")
    $att = $gloabllist.CreateAttribute("value")
    $child.Attributes.Append($att)
    $child.value = "$_"
    $node.AppendChild($child)
})

$gloabllist.Save($filePath)
witadmin importgloballist /collection:$collection /f:$filePath

Вы можете установить запланированную сборку, которая будет настраивать этот скрипт каждый день, чтобы он постоянно обновлялся.

Вы также можете улучшить сценарий, чтобы получить все проекты, создать их заново, получить имена определений сборки и обновить глобалистфайл.

...