Azure Конвейеры DevOps: отмена нескольких незавершенных заданий в очереди - PullRequest
1 голос
/ 27 мая 2020

В конвейерах Azure DevOps: как отменить все ожидающие задания для пула заданий. У меня очереди в очереди, и я не вижу, где я могу отменить все задания, которые ожидаю.

1 Ответ

1 голос
/ 28 мая 2020

Azure DevOps еще не имеет этой функции для отмены всех ожидающих заданий в пакетном режиме из пользовательского интерфейса.

Вы можете написать сценарии для вызова rest api, чтобы отменить все ожидающие задания в качестве обходного пути. Выполните следующие шаги:

Сначала используйте list build rest api , чтобы получить все ожидающие задания.

https://dev.azure.com/{organization}/{project}/_apis/build/builds?statusFilter=notStarted&api-version=5.1

Затем используйте обновить api сборки для отмены отложенных заданий:

PATCH https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}?api-version=5.1

См. Ниже скрипты PowerShell для справки:

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

$url= "https://dev.azure.com/{organization}/{project}/_apis/build/builds?statusFilter=notStarted&api-version=5.1"

$pat="Personal Access Token"

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

$pendingJobs=Invoke-RestMethod -Uri $url-Headers @{Authorization = ("Basic {0}" -f $base64AuthInfo)} -Method get -ContentType "application/json" 

$jobsToCancel = $pendingJobs.value

#Pending jobs donot consume the job agents in the agent pool. To filter the definition name to cancel pending jobs for a particular pipeline, you can use below filter criteria. 
#$jobsToCancel = $pendingJobs.value | where {$_.definition.Name -eq "{Name of your pipeline }"}

#call update api to cancel each job.
ForEach($build in $jobsToCancel)
{
   $build.status = "Cancelling"
   $body = $build | ConvertTo-Json -Depth 10
   $urlToCancel = "https://dev.azure.com/{organization}/{project}/_apis/build/builds/$($build.id)?api-version=5.1"
   Invoke-RestMethod -Uri $urlToCancel -Method Patch -ContentType application/json -Body $body -Header @{Authorization = ("Basic {0}" -f $base64AuthInfo)}
}

Вы также можете отправить запрос на новую функцию (нажмите Предложите функцию и выберите azure DevOps ) в Microsoft Development команда для поддержки отмены отложенных заданий в пакетном режиме. Надеюсь, они рассмотрят возможность добавления этой функции в будущем спринте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...