Как получить список сборки для конкретного коммита через DevOps REST API - PullRequest
0 голосов
/ 26 сентября 2019

Мне нужно получить список сборок, связанных с определенным коммитом (см. Рисунок пользовательского интерфейса TFS) через API-интерфейс REST Azure DevOps.Я могу сделать это, используя грубую силу:

  1. Загрузка всех сборок для моего хранилища через вызов API .Не удается найти фильтр для коммита:

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds

Тогда фильтр отфильтровывает только с указанным "commitId": "eed1b008520c2b32669bef9a0a08be8a50b6e8a4"

Но это крайне неэффективное решение.Можете ли вы помочь мне, если есть более эффективный способ?Я пытался загрузить детали для Commit со ссылками, но нет ссылки для сборки или сборки.

List of builds in Azure DevOps UI

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Существует API статусов для фиксации.Кажется, что при запуске и завершении сборки, соответствующий статус публикуется

Поэтому, когда я звоню GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/statuses?api-version=5.1

, я получаю все последние сборки, связанные с коммитом и их статусами.

Спасибо Хью Лину за то, что он показал мне направление ..

1 голос
/ 27 сентября 2019

Не должно быть никаких других способов получить сборки для конкретного коммита через остальные API, кроме поиска через commitId.Мы не можем отфильтровать возвращенный результат с помощью commitId или sourceVersion в качестве параметров.

Если вы чувствуете, что получение всех сборок и последующая фильтрация через commitId крайне неэффективны, самый простой способ сделать это в пользовательском интерфейсе:Коммиты, вы запрашиваете указанный коммит через commitId.На вкладке состояния конвейера этой фиксации отображаются все соответствующие сборки.Как показано на рисунке, вы можете нажать на конкретную сборку, чтобы перейти на подробную страницу сборки.

Другой сложный способ - нажать F12 в браузере, а затем выбрать Network, чтобы захватить запрос.,Вы можете захватить buildId в теле ответа, а затем вы можете получить сборки с остальными api на основе buildId.

Вам нужно написать скрипт для разбора buildId из "targetUrl":"vstfs:///Build/Build/xxx"

enter image description here

...