无法在 Azure DevOps 中按 artifactSourceId 筛选 API

Cannot filter by artifactSourceId in Azure DevOps API

给定一个已知的 buildDefinitionId,我正在尝试确定依赖于构建输出的(一个或多个)发布定义。

文档:https://docs.microsoft.com/en-us/rest/api/azure/devops/release/definitions/list?view=azure-devops-rest-5.0

声明我可以以 {projectGuid}:{BuildDefinitionId} 格式传递 artifactSourceId 参数,但是当我尝试传递此参数时,我得到 every 发布定义对于指定的项目。

使用 url : https://vsrm.dev.azure.com/my-company/d4155bbc-d85f-4aaf-9a8e-0ba70272cca4/_apis/release/definitions?artifactSourceId=d4155bbc-d85f-4aaf-9a8e-0ba70272cca4:950&api-version=5.0

在我的项目中,我得到了 553 个构建定义的列表。在响应正文中搜索工件键 d4155bbc-d85f-4aaf-9a8e-0ba70272cca4:950 ({projectGuid}:{buildDefinitionId}) 给出了预期的 2 个结果,如下所示:

"artifacts": [
            {
                "sourceId": "d4155bbc-d85f-4aaf-9a8e-0ba70272cca4:950",
                "type": "Build",
                "alias": "my-build-definition",
                // more fields here
             }
             ]

奇怪的是,如果我不传递 artifactSourceId 参数,我根本不会在响应中获得任何工件数据 - 包括当我指定 $expand=artifact 参数时 - 但我可以指定 artifactSourceId=xyz,它仍然会 return 一个 所有 发布定义的列表。

这似乎是 api 的错误,但如果有人有任何见解或解决方法,我将不胜感激。

您需要使用参数 $expand=artifacts(不是 $expand=artifact)来展开工件详细信息。

关于参数 artifactSourceId,您需要同时使用参数 artifactTypeartifactSourceId 来过滤具有给定 artifactSourceId 的发布定义。