Обновление пулов агентов в определениях выпуска и сборки с использованием Azure devops API на C#

#c# #azure-devops #azure-devops-rest-api

#c# #azure-devops #azure-devops-rest-api

Вопрос:

Мы сталкиваемся с масштабной миграцией нашей среды Azure Devops в Azure. Это также означает, что все (классические) определения выпуска и определения сборки должны быть обновлены с помощью новых пулов агентов после завершения миграции. Проблема в том, что у нас их (очень) много, и обновлять их все вручную было бы непростой задачей.

Возможно ли это сделать с помощью Azure Devops REST API? И если да, то как (на C #)? Я думаю о чем-то вроде:

  • Перечислите все определения сборки / выпуска (с фильтрацией, я думаю, всех их сразу было бы слишком много)
  • Выполните цикл по определениям, а затем по всем заданиям агента (для определений сборки) и / или по всем этапам, а затем по заданиям агента внутри этапов (для определений выпуска)
  • Обновите все задания агента с помощью новых пулов агентов (на основе текущего).
  • Сохранить с комментарием?

Возможно ли это в C # с помощью вызовов API REST (или клиентских библиотек .NET)? Если да, то каким образом?

Ответ №1:

Существует Rest API для обновления определения сборки и обновления определения выпуска.

Итак, вам нужно сначала получить список определений сборки и выпуска, затем выполнить их цикл и обновить пул.

Вы можете использовать Rest API для любого языка, который вы хотите. если вам нужен C #, вы можете использовать клиентские библиотеки Azure DevOps .NET.

Комментарии:

1. Спасибо! После некоторых проблем мне удалось обновить определения выпуска с помощью . СЕТЕВЫЕ клиентские библиотеки. Самой большой проблемой было найти пул агентов, соответствующий тому, который настроен в определении выпуска. В графическом интерфейсе Azure DevOps кажется, что пул агентов связан, но на самом деле это связанная очередь агентов (идентификаторы обоих разные, очередь агентов, к счастью, имеет отношение 1-1 к пулу агентов). Вторая проблема заключалась в обновлении QueueId, потому что он действительно хорошо скрыт (в отличие от других свойств) и может быть получен / установлен только при приведении результирующего объекта. Я скоро опубликую код в обновлении выше.