Отчет о состоянии сборки из Jenkins в Azure DevOps
Есть ли возможность отправлять отчеты о состоянии сборки из Jenkins в Azure DevOps?
У меня есть репозиторий в Azure DevOps и конвейер в Jenkins. Используя функциональные возможности Azure Service Hooks, я запускаю конвейер Jenkins при обновлении репозитория. Это отлично работает как с опциями "Встроенный API Jenkins", так и с "подключаемым модулем DevOps для Jenkins".
Теперь я хочу, чтобы статус сборки отображался на странице Azure DevOps на странице коммитов, как если бы был выполнен собственный конвейер Azure DevOps, и отображал ссылку на сборку Jenkins, если это возможно.
Есть ли способ сделать это?
Я думал о вызове некоторого Azure REST API в качестве действия после сборки в Jenkins, однако мне кажется, что нет API, позволяющего устанавливать статус фиксации, а также вставлять данные для сборки, которая никогда не запускалась самим Azure DevOps.
1 ответ
Существует спокойный api, который позволяет вам создавать статус коммитов git для коммитов на странице коммитов.
Вы можете вызвать ниже API как действие после сборки в Jenkins.
POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/statuses?api-version=5.1
CommitId - это SHA фиксации. И вы можете получить repositoryId из Хранилища под Репо в настройках проекта. Это в URL. Посмотрите скриншот ниже.
Ниже приведен пример создания статуса фиксации в сценариях PowerShell.
$url="https://dev.azure.com/Org/Proj/_apis/git/repositories/....-..-442d-9dbe-76debfba1c60/commits/....faac7aafeefb3f1b83c/statuses?api-version=5.1"
$connectionToken ="Person Access Token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$body ='{
"state": "succeeded",
"description": "The build is successful",
"targetUrl": "https://dev.azure.com/.../.../_build/results?buildId=1577",
"context": {
"name": "Build123",
"genre": "continuous-integration"
}}'
Invoke-RestMethod -Uri $url -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method Post -ContentType "application/json" -Body $body