API для удаления нескольких автономных агентов из Azure DevOps

Наши агенты сборки Azure DevOps настроены на Kubernetes. Отказавшие поды можно легко удалить из куба, но они отображаются как «автономные» агенты в веб-интерфейсе Azure DevOps.

Со временем список офлайновых агентов очень расширился. Есть ли способ удалить их программно?


comment
связанные: stackoverflow.com/questions/54206874/   -  person dparkar    schedule 01.03.2019


Ответы (3)


$agents = Invoke-RestMethod -uri 'http://dev.azure.com/{organization}/_apis/distributedtask/pools/29/agents' -Method Get -UseDefaultCredentials
$agents.value |
    Where-Object { $_.status -eq 'offline' } |
    ForEach-Object {
        Invoke-RestMethod -uri "http://dev.azure.com/{organization}/_apis/distributedtask/pools/29/agents/$($_.id)?api-version=4.1" -Method Delete -UseDefaultCredentials
    }

Некоторые предположения для этого решения:

  1. Вы ищете агентов по сборке
  2. Вы уже знаете идентификатор искомого пула. Вы также можете получить это программно или просто перебрать все пулы, если хотите
  3. У вас нет проблем с удалением офлайн-агентов

Примечание. Я использую Azure DevOps Server, поэтому замените -UseDefaultCredentials на ваше разрешение.

person Matt    schedule 02.03.2019

Я думаю, вам нужно будет использовать комбинацию этих двух вызовов API:

  1. Получить группы развертывания
  2. Удалить агент
person 4c74356b41    schedule 01.03.2019
comment
Не знаю, как получить идентификатор группы развертывания, поэтому я попытался перечислить их, которые вернулись с 0 результатами: \ - person dparkar; 01.03.2019
comment
хм, попробуйте agentclouds получить или перечислить - person 4c74356b41; 01.03.2019
comment
это возвращает 404 - person dparkar; 02.03.2019

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

https://github.com/julioct/azure-pipelines-kubernetes-agents

person Filip Niko    schedule 28.10.2020