Обходной путь должен извлечь подмножество списка выпусков из Azure DevOps, используя CLI - PullRequest
0 голосов
/ 16 января 2020

Я запускаю az pipelines release list --org $organization --project $project --top 1000 -o table, чтобы получить все релизы в $ project. Я только что получил первые 100 выпусков - поскольку есть ошибка, о которой я сообщил https://github.com/Azure/azure-devops-cli-extension/issues/937)

Чтобы обойти это ограничение, я попытался отфильтровать вывод из списка выпусков az конвейеров (используя - -query), основанный на имени releaseDefinition, чтобы получить только подмножество этого набора данных и не превышать ограничение в 100 элементов, - настраивая фильтры перед выводом набора данных. К сожалению, это не сработало, так как не выполняет предварительную фильтрацию, но вместо этого загружает первые 100 первых элементов, а затем фильтрует этот набор данных.

У кого-нибудь есть обходной путь?

1 Ответ

0 голосов
/ 17 января 2020

Я не считаю это ошибкой; просто не документированное ограничение API. Это не проблема с Azure CLI, так как все, что делает CLI, это делает вызовы REST к конечной точке API Azure.

Ограничение 100 результатов в конечной точке API является довольно распространенным ограничением. чтобы API могли управлять размерами запросов на ответ и ограничивать возможности DDOS.

Но можно ожидать, что --query предварительно отфильтрует результаты. Итак, давайте посмотрим на код CLI на GitHub. Здесь вы видите, что CLI выполняет API-вызов :

...
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 получит только 100 элементов из API.

Это означает, что остальные параметры фильтрации --query обрабатываются на стороне клиента с помощью CLI, который имеет максимум максимум 100 результатов.

Чтобы получить более 100 результатов, им нужно добавить еще один параметр в API, чтобы можно было возвращать более 100 результатов.

...