解决方法需要使用CLI从Azure DevOps中提取发行列表的子集

问题描述 投票:0回答:1

我运行az pipelines release list --org $organization --project $project --top 1000 -o table获取$ project中的所有发行版。我刚刚获得了前100个版本-我报告了一个错误https://github.com/Azure/azure-devops-cli-extension/issues/937

要解决该限制,我尝试根据releaseDefinition名称从z管道发行列表中过滤输出(使用--query),以仅获取此数据集的子集,而不是达到此100个项目的限制-希望在此之前对其进行过滤输出数据集。不幸的是,它没有起作用,因为它没有进行预过滤,而是加载了前100个项目,然后过滤了该数据集。

有人有解决方法吗?

谢谢

azure powershell command-line-interface devops jmespath
1个回答
0
投票

我不认为这是一个错误;只是没有记录在案的API限制。 Azure CLI没问题,因为CLI所做的全部就是对后端Azure API端点进行REST调用。

API端点的100结果限制是API保持响应请求大小可管理并限制DDOS功能的相当普遍的限制。

但是您希望--query预过滤结果。因此,让我们看一下GitHub上的CLI代码。 Here you can see the CLI making the API call

...
releases = client.get_releases(definition_id=definition_id,
                               project=project,
                               source_branch_filter=source_branch,
                               top=top,
                               status_filter=status)
return releases

而且我们看到的是,API级别的唯一过滤是top--query参数未在API请求中传递。由于API当前最多只能返回100个项目,因此CLI只能从API获取100个项目。

这意味着其余--query过滤参数由CLI在客户端进行处理,该CLI仅具有最多前100个结果。

为了获得100多个结果,他们需要向API添加另一个参数以允许返回100多个结果。

© www.soinside.com 2019 - 2024. All rights reserved.