Значения полей Azure DevOps из списка сборок

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

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


person Yonnatan Bar    schedule 24.09.2019    source источник
comment
Вы используете процесс наследования или размещенный XML-процесс?   -  person Shayki Abramczyk    schedule 24.09.2019
comment
Размещенный XML-процесс   -  person Yonnatan Bar    schedule 24.09.2019


Ответы (1)


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

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

<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

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

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

person Shayki Abramczyk    schedule 24.09.2019