如何通过 API 创建跨多个项目的 Azure DevOps 迭代
How to Create an Azure DevOps Iteration Across Multiple Projects via the APIs
此处的答案适用于单个项目,
但是当你遍历多个项目时会失败,因为 API 在上面的 link 中的工作方式似乎创建了一个迭代,它的名称在所有项目中都是唯一的,而不是而不是可以跨多个项目使用的迭代名称。
我得出的结论是,阅读我可以在网上找到的所有文档/信息是不可能的。因此,检查这里是否有人找到了解决方案。对于此要求,迭代名称需要在所有项目中都相同,原因我不会在这里让您厌烦。添加迭代时可通过用户界面使用此功能,因此它无法通过 APIs.
工作似乎很奇怪
错误信息:
{
"$id": "1",
"innerException": null,
"message": "VS402371: Classification node name Sprint 2020-06-24 is already in use by a different child of parent classification node {GUID removed}. Choose a different name and try again.",
"typeName": "Microsoft.TeamFoundation.WorkItemTracking.Server.Metadata.ClassificationNodeDuplicateNameException, Microsoft.TeamFoundation.WorkItemTracking.Server",
"typeKey": "ClassificationNodeDuplicateNameException",
"errorCode": 0,
"eventId": 3200
}
根据我的测试,如果您替换 URL 中的项目名称,其余 API 仍然可以 运行 成功。
以下是我的测试步骤和结果:
对于项目 1:
URL: Post
https://dev.azure.com/{Org name}/Project1/_apis/wit/classificationnodes/Iterations?api-version=5.0
结果:成功
对于项目 2
URL: Post
https://dev.azure.com/{Org name}/Project2/_apis/wit/classificationnodes/Iterations?api-version=5.0
结果:成功
我只更改项目名称。请求正文相同。结果,迭代路径不同。所以他们不会有冲突。
从错误信息来看,目标项目中似乎已经存在迭代名称。
您可以在 项目设置 -> 项目配置 -> 迭代中查看迭代名称。
或者您可以使用此 Rest API 获取 Classification Nodes
和子 iterations.Then 您可以通过分类节点(错误消息中的 GUID)搜索节点(已经包含迭代名称) ) 在 API 结果中。
Get https://dev.azure.com/{Orgname}/Project2/_apis/wit/classificationnodes?$depth=2&api-version=5.0
请确保此迭代名称在节点中是唯一的。
更新:
当然可以。我们可以通过 Rest API.
将其存档
您可以使用此 rest api 将迭代添加到 Sprint 列表。
URL:
Post https://dev.azure.com/orgname/Projectname/{team}/_apis/work/teamsettings/iterations?api-version=5.1
请求正文:
{
"id":" Iteration identifier id"
}
然后迭代可以添加到 Sprint 列表中。
此处的答案适用于单个项目,
但是当你遍历多个项目时会失败,因为 API 在上面的 link 中的工作方式似乎创建了一个迭代,它的名称在所有项目中都是唯一的,而不是而不是可以跨多个项目使用的迭代名称。
我得出的结论是,阅读我可以在网上找到的所有文档/信息是不可能的。因此,检查这里是否有人找到了解决方案。对于此要求,迭代名称需要在所有项目中都相同,原因我不会在这里让您厌烦。添加迭代时可通过用户界面使用此功能,因此它无法通过 APIs.
工作似乎很奇怪错误信息:
{
"$id": "1",
"innerException": null,
"message": "VS402371: Classification node name Sprint 2020-06-24 is already in use by a different child of parent classification node {GUID removed}. Choose a different name and try again.",
"typeName": "Microsoft.TeamFoundation.WorkItemTracking.Server.Metadata.ClassificationNodeDuplicateNameException, Microsoft.TeamFoundation.WorkItemTracking.Server",
"typeKey": "ClassificationNodeDuplicateNameException",
"errorCode": 0,
"eventId": 3200
}
根据我的测试,如果您替换 URL 中的项目名称,其余 API 仍然可以 运行 成功。
以下是我的测试步骤和结果:
对于项目 1: URL: Post
https://dev.azure.com/{Org name}/Project1/_apis/wit/classificationnodes/Iterations?api-version=5.0
结果:成功
对于项目 2
URL: Post
https://dev.azure.com/{Org name}/Project2/_apis/wit/classificationnodes/Iterations?api-version=5.0
结果:成功
我只更改项目名称。请求正文相同。结果,迭代路径不同。所以他们不会有冲突。
从错误信息来看,目标项目中似乎已经存在迭代名称。
您可以在 项目设置 -> 项目配置 -> 迭代中查看迭代名称。
或者您可以使用此 Rest API 获取 Classification Nodes
和子 iterations.Then 您可以通过分类节点(错误消息中的 GUID)搜索节点(已经包含迭代名称) ) 在 API 结果中。
Get https://dev.azure.com/{Orgname}/Project2/_apis/wit/classificationnodes?$depth=2&api-version=5.0
请确保此迭代名称在节点中是唯一的。
更新:
当然可以。我们可以通过 Rest API.
将其存档您可以使用此 rest api 将迭代添加到 Sprint 列表。
URL:
Post https://dev.azure.com/orgname/Projectname/{team}/_apis/work/teamsettings/iterations?api-version=5.1
请求正文:
{
"id":" Iteration identifier id"
}
然后迭代可以添加到 Sprint 列表中。