我正在尝试使用Azure DevOps(TFS)扩展中的选择列表显示项目列表。以下是task.json中的代码段:
输入:
{
"name": "project",
"type": "pickList",
"label": "Project",
"defaultValue": "",
"required": false,
"helpMarkDown": "Select the root area.",
"properties": {
"DisableManageLink": "True"
}
}
来源定义:
{
"target": "project",
"endpoint": "http://localhost:8080/tfs/DefaultCollection/_apis/projects?api-version=1.0",
"selector": "jsonpath:$.name",
"keySelector": "jsonpath:$.name",
"authKey": "tfs:teamfoundation"
}
我的本地环境具有TFS 2015,该URL在浏览器中工作正常。 但是,扩展程序中的选择列表并没有填写。
你知道这里出了什么问题吗?
顺便说一句,当我查看浏览器控制台时,可以看到“ 400(错误请求)”。
谢谢。
答案 0 :(得分:0)
这有效! (甚至令我惊讶):
"inputs": [
{
"name": "sourceProject",
"type": "pickList",
"label": "Source project",
"defaultValue": "",
"required": true,
"helpMarkDown": "Select the TFS Project.",
"properties": {
"EditableOptions": "True"
}
}
],
"dataSourceBindings": [
{
"target": "sourceProject",
"endpointId": "tfs:teamfoundation",
"endpointURL": "{{endpoint.url}}/_apis/projects?api-version=1.0",
"resultSelector": "jsonpath:$.value[*]",
"resultTemplate": "{ \"Value\" : \"{{{id}}}\", \"DisplayValue\" : \"{{{name}}}\" }"
}
]
注意,“ runSelector”和“ resultTemplate”已正确定义。真正的关键是“ resultSelector”和“ endpointId”中正确的JSON路径查询,该查询使用了标签错误的“ tfs:teamfoundation”。 resultTemplate用于格式化下拉列表。
我创建了一个带有工作扩展名的GitHub存储库,可以在自己的TFS集合上对其进行测试。 https://github.com/Antebios/vsts-projectlist-task
编辑:这适用于Azure Devops,但会为我正在使用的TFS 2015引发错误。看来"endpointId": "tfs:teamfoundation"
对于TFS可能无效。