无法通过Azure DevOps API中的artifactSourceId进行过滤

时间:2019-05-09 21:57:36

标签: azure-devops azure-pipelines-release-pipeline

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

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

指出可以以artifactSourceId格式传递{projectGuid}:{BuildDefinitionId}参数,但是当我尝试传递此参数时,会得到指定项目的每个版本定义。

使用网址: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参数时-但我可以指定{ {1}},它仍然会返回所有版本定义的列表。

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

1 个答案:

答案 0 :(得分:1)

您需要使用参数$expand=artifacts(而不是$expand=artifact)来扩展工件细节。

关于参数artifactSourceId,您需要一起使用参数artifactTypeartifactSourceId来过滤具有给定artifactSourceId的发行版定义。