TFS API - фильтр minTime не работает - PullRequest
0 голосов
/ 26 мая 2018

Существует ли уровень версии API, необходимый для работы параметра minTime?

GET https://{accountName}.visualstudio.com/{project}/_apis/build/builds?api-version=3.1&minTime=?????

Мы запускаем TFS api ver 3.1 на предпосылке, и minTime, похоже, не работает для нас.

Было бы здорово узнать, какие параметры доступны для какой версии API.

В документации сказано, что 4.1 поддерживает этот параметр:

maxTime query       
string
date-time   
If specified, filters to builds that finished/started/queued before this date based on the queryOrder specified.

minTime query       
string
date-time   
If specified, filters to builds that finished/started/queued after this date based on the queryOrder specified.

1 Ответ

0 голосов
/ 28 мая 2018

Да, параметры minTime и maxTime поддерживаются начиная с api-version=4.1.

Пожалуйста, смотрите API REST: Builds - List для подробностей.В нем упоминаются все доступные параметры URI с api-version=4.1.

В вашем сценарии TFS 2017 не поддерживает api-version=4.1.Он поддерживает только версии 3.xx и более ранние версии (1.0, 2.0).Для получения подробной информации см. Версии REST API-Поддерживаемые версии .

Итак, если вы хотите использовать параметры minTime и maxTime, вы можете выполнить обновление до TFS 2018 или перейти на VSTS.

В качестве альтернативы вы можете использовать другие инструменты для фильтрации сборок по дате, например, вы можете фильтровать в PowerShell с вызовом API REST.

Param(
   [string]$baseurl = "http://server:8080/tfs/DefaultCollection",  
   [string]$projectName = "ProjectName",
   [string]$user = "username",
   [string]$token = "password"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$uri = "$baseurl/$($projectName)/_apis/build/builds"

$result = Invoke-RestMethod -Uri $uri -Method GET  -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

$builds = $result.value | Where {$_.finishTime -ge '2018-05-24' -and $_.finishTime -le '2018-05-29'} # Filter builds by finish time between '2018-05-24' and '2018-05-29'

enter image description here

...