1

我们的 Azure DevOps 构建代理是在 Kubernetes 上设置的。失败的 pod 可以很容易地从 kube 中删除,但它们在 Azure DevOps Web UI 中显示为“离线”代理。

加班线下代理的名单真的很长。有没有办法以编程方式删除它们?

4

3 回答 3

1
$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. 您已经知道要查找的池的 ID。您也可以通过编程方式进行此操作,或者如果您愿意,只需遍历所有池
  3. 删除任何离线代理没有任何问题

注意: 我使用的是 Azure DevOps Server,因此请-UseDefaultCredentials用您的授权替换。

于 2019-03-02T02:10:14.147 回答
0

我认为您需要结合使用这两个 api 调用:

  1. 获取部署组
  2. 删除代理
于 2019-03-01T07:56:20.237 回答
0

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

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

于 2020-10-28T23:22:10.193 回答