从Jenkins向Azure DevOps报告构建状态

从Jenkins向Azure DevOps报告构建状态,azure,jenkins,azure-devops,azure-pipelines,jenkins-tfs-plugin,Azure,Jenkins,Azure Devops,Azure Pipelines,Jenkins Tfs Plugin,是否有可能从Jenkins向Azure DevOps报告构建状态 我在Azure DevOps中有一个存储库,在Jenkins中有一个管道。使用Azure服务挂钩功能,我在更新存储库时触发Jenkins管道。这在“内置Jenkins API”和“DevOps Jenkins插件”选项中都可以很好地使用 现在,我希望在提交页面上的Azure DevOps中显示构建状态,就好像执行了本机Azure DevOps管道一样,并尽可能显示指向Jenkins构建的链接 有办法吗 我曾考虑在Jenkins中调

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

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

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

有办法吗


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

有一个restful API,允许您在提交页面中为提交创建一个应用程序

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

POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/statuses?api-version=5.1
commitId是commit SHA。您可以从项目设置中Repos下的存储库中获取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

有一个restful api,允许您在提交页面中为提交创建一个应用程序

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

POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/statuses?api-version=5.1
commitId是commit SHA。您可以从项目设置中Repos下的存储库中获取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

非常感谢,它比我想象的更灵活!非常感谢,它比我想象的更灵活!