1

是否有可能从 Jenkins 向 Azure DevOps 报告构建状态?

我在 Azure DevOps 中有一个存储库,在 Jenkins 中有一个管道。使用 Azure 服务挂钩功能,我会在存储库更新时触发 Jenkins 管道。这适用于“内置 Jenkins API”和“用于 Jenkins 的 DevOps 插件”选项。

现在,我希望在提交页面上的 Azure DevOps 中显示构建状态,就好像执行了原生 Azure DevOps 管道一样,并尽可能在此处显示指向 Jenkins 构建的链接。

有没有办法做到这一点?

我正在考虑在 Jenkins 中调用一些 Azure REST API 作为构建后操作,但是似乎没有允许设置提交状态的 API,也没有为 Azure DevOps 本身从未启动的构建插入数据。

4

1 回答 1

3

有一个 restful api 允许您为提交页面中的提交创建一个git 提交状态。

您可以在 Jenkins 中调用以下 API 作为构建后操作。

POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/statuses?api-version=5.1

commitId 是提交 SHA。您可以从Project SettingsRepos下的Repositories获取 repositoryId 。它在网址中。检查下面的屏幕截图。

在此处输入代码

下面是在 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
于 2019-12-10T11:11:25.137 回答