构建列表中的 Azure DevOps 字段值
Azure DevOps Field Values from list of builds
我们在公司内部使用 Azure DevOps 2019,我想在我们的 Bug 工作项中创建一个选项框字段,我希望它是一个组合框,值是从中构建的项目下的所有构建定义。
从检查系统的文档中,我没有找到任何关于如何做的选项,如果通过 API 查询系统或查询数据库会更好。
我认为没有这样的内置功能。
你可以做的是创建一个字符串字段,从 gloabllist 中获取值,在 globallist 中第一次创建一个带有项目名称的 globallist,例如:
<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
您可以设置一个计划构建,每天调整此脚本以一直更新。
您还可以改进脚本以获取所有项目,对其进行处理,获取构建定义名称并更新全局列表文件。
我们在公司内部使用 Azure DevOps 2019,我想在我们的 Bug 工作项中创建一个选项框字段,我希望它是一个组合框,值是从中构建的项目下的所有构建定义。
从检查系统的文档中,我没有找到任何关于如何做的选项,如果通过 API 查询系统或查询数据库会更好。
我认为没有这样的内置功能。
你可以做的是创建一个字符串字段,从 gloabllist 中获取值,在 globallist 中第一次创建一个带有项目名称的 globallist,例如:
<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
您可以设置一个计划构建,每天调整此脚本以一直更新。
您还可以改进脚本以获取所有项目,对其进行处理,获取构建定义名称并更新全局列表文件。