Kubernetes 用于从Azure DevOps删除多个脱机代理的API

Kubernetes 用于从Azure DevOps删除多个脱机代理的API,kubernetes,azure-devops,azure-devops-rest-api,azure-devops-self-hosted-agent,Kubernetes,Azure Devops,Azure Devops Rest Api,Azure Devops Self Hosted Agent,我们的Azure DevOps构建代理安装在Kubernetes上。失败的POD可以很容易地从kube中删除,但它们在Azure DevOps Web UI中显示为“脱机”代理 随着时间的推移,离线代理的名单变得越来越长。有没有办法以编程方式删除它们?我认为您需要结合使用以下两种api调用: 此解决方案的一些假设: 您正在寻找构建代理 您已经知道要查找的池的id。您也可以通过编程来实现这一点,或者如果需要的话,只需在所有池中循环即可 删除任何脱机代理都不会有任何问题 注意:我使用的是Azur

我们的Azure DevOps构建代理安装在Kubernetes上。失败的POD可以很容易地从kube中删除,但它们在Azure DevOps Web UI中显示为“脱机”代理


随着时间的推移,离线代理的名单变得越来越长。有没有办法以编程方式删除它们?

我认为您需要结合使用以下两种api调用:

  • 此解决方案的一些假设:

  • 您正在寻找构建代理
  • 您已经知道要查找的池的id。您也可以通过编程来实现这一点,或者如果需要的话,只需在所有池中循环即可
  • 删除任何脱机代理都不会有任何问题

  • 注意:我使用的是Azure DevOps服务器,因此请使用您的授权替换
    -UseDefaultCredentials

    或者您可以为代理使用一些命名矩阵,以便它们使用相同的“名称”,即使它不是相同的容器


    related:不确定如何获取部署组id,所以我尝试列出它们,结果为0:\hm,尝试获取或列出返回404的部署组id
    $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
        }