Я также экспериментировал с запросами, и мне удалось создать запрос в ADO, в котором перечислены задачи, которые находятся в состоянии «Готово», но я не могу найти способ получить результат запроса через API REST в Jenkinsfile. Любая помощь с этим?
Вы можете использовать скрипт Powershell для вызова остальных API, попробуйте этот скрипт (я использую этот rest API ):
$token = "xxx"
$url="https://dev.azure.com/YourOrgName/YourProjectName/_apis/wit/wiql?api-version=5.1"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$JSON = @'
{
"query": "SELECT [System.Id],[System.Title],[System.State] FROM workitems WHERE [System.TeamProject] = @project AND [system.WorkItemType] = 'Task' AND [System.State]='Done' "
}
'@
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json
Write-Host "result = $($response | ConvertTo-Json -Depth 100)"
Он вернет все рабочие элементы, чьи Type=Task
и State=Done
с соответствующими им идентификаторами и URL-адресами.
Вы должны ввести свой собственный PAT в $token
и заменить YourOrgName
и YourProjectName
с вашими собственными Azure Devops OrganizationName и ProjectName.
Что касается вызова сценария PS в jenkinsfile, вы можете проверить Поддержка Microsoft PowerShell для конвейера и Выполнение команды powershell непосредственно в трубопровод Дженкинса .
Edit1:
На веб-портале у меня есть такие мысли:
![enter image description here](https://i.stack.imgur.com/lhsFO.png)
Затем в Почтальоне я использую тело следующим образом:
![enter image description here](https://i.stack.imgur.com/lXZEd.png)
{
"query": "SELECT [System.Id],[System.Title],[System.State] FROM workitems WHERE [System.TeamProject] = @project AND [system.WorkItemType] = 'Task' AND [System.State] = 'Done'"
}
Ответ:
![enter image description here](https://i.stack.imgur.com/bwzR3.png)