Как отключить собственный агент в пуле AzureDevOps через командную строку

У нас есть несколько автономных агентов сборки в AzureDevOps, и я хочу автоматизировать их обслуживание. (такие вещи, как обновления Windows или инструменты VSbuild)

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

Кто-нибудь знает, как это сделать через командную строку?


person BlueBunny    schedule 10.06.2020    source источник


Ответы (1)


Кто-нибудь знает, как это сделать через командную строку?

Вместо CMD вы можете использовать Powershell.exe (Cmd.exe is not recommended for calling azure devops rest api) на своем локальном компьютере, чтобы отключить любой размещенный на собственном сервере агент через этот rest api:

Patch https://dev.azure.com/{OrganizationName}/_apis/distributedtask/pools/{PoolID}/agents/{AgentID}?api-version=5.0

Тело запроса:

{
    "id":{AgentID},"enabled":false
}

Подробности:

  1. Перейдите в Настройки организации => Пулы агентов => Выберите пул, в котором размещен ваш агент, размещенный на собственном хостинге => Проверьте вкладку Agents и щелкните один из своих агентов, чтобы увидеть подробности. Затем вы можете найти PoolID и AgentID.

    введите здесь описание изображения

  2. Теперь давайте создадим PAT для аутентификации в Azure DevOps. Достаточно только доступа "Чтение и управление" пулами агентов.

    введите здесь описание изображения

  3. Предполагая, что мое имя организации TestOrganization, мой последний сценарий PowerShell будет выглядеть следующим образом:

(Вы можете запустить его в Windows Powershell ISE)

$token = "wjqtxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxtgiga"

$url="https://dev.azure.com/TestOrganization/_apis/distributedtask/pools/10/agents/9?api-version=5.0"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$JSON = @'
{
    "id":9,"enabled":false
}
'@

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Patch -ContentType application/json -Body $JSON
write-host $response | ConvertTo-Json -Depth 100

С помощью токена $ (ваш PAT), PoolID и AgentID вы можете легко контролировать, какой агент будет enabled/disabled через "enabled":xxx(true or false here). Обратите внимание, что вам нужно заменить agentID как в URL-адресе, так и в теле запроса.

person LoLance    schedule 11.06.2020
comment
Да, это работает. Это в основном то, что я искал, но не смог найти в документации по API. Спасибо - person BlueBunny; 11.06.2020