Значения полей Azure DevOps из списка сборок
Мы используем Azure DevOps 2019 локально в нашей компании, и я хотел бы создать поле с параметром в нашем рабочем элементе Ошибка, и я хочу, чтобы это было поле со списком, в котором значения строятся на основе всех определений сборки в проект.
Изучив документацию по системе, я не нашел ни одного варианта, как это сделать, и эфира, лучше ли запросить систему через API или запросить БД.
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.