REST API,从CD发布管道获取工作项ID

时间:2019-08-08 09:12:31

标签: azure-devops azure-pipelines azure-devops-rest-api

在Azure DevOps中,我有一个生成工件的CI管道。一旦“拉取请求”获得批准,它将触发CD发行管道。在CD管道中,我添加了一个PowerShell任务来执行一些REST API功能。

我想从CI阶段构建的工件中检索关联的工作项ID。

我通过提供内部版本ID(例如32个字符,例如 de5017b5bf537a92397f54f5570783bf32cc6bf )来使用此API,但是结果是:404-找不到页面。

有什么想法吗?也许此API仅在CI构建管道中使用?非常感谢。

修改

我从CD管道的初始化作业日志中获得了构建ID,并添加了一个变量$(Release.Artifacts.ALIASNAME.BuildID)

enter image description here

2 个答案:

答案 0 :(得分:3)

  

也许此API仅在CI构建管道中使用?

否,API不仅限于构建管道。也可以在发行版中使用。

由于您尚未共享有关powershell的脚本,因此我可以共享您的示例。我只是对其进行了测试,并成功了。

$buildid=$(build.buildid)
$url = "https://dev.azure.com/{org name}/{project name}/_apis/build/builds/$buildId/workitems?api-version=5.1"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method GET

Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"

build.buildid是此发行版中相关构建的环境变量。

在此管道的日志中,您将看到API的结果:

enter image description here

已更新:

我尝试从后端检查您的日志详细信息,并发现错误。在初始化作业的日志中,您可以看到构建定义名称与您的回购名称相同。这意味着此版本的源是存储库,而不是Build:

enter image description here

更新2:

如果要在PR完成后触发此版本,请在版本的触发类型中选择连续部署触发器。对于请求请求,完成意味着允许更改合并到目标分支中。这是持续部署触发器持续集成的前提。

此外,对于发行版的来源,请选择相关的内部版本。在构建定义的触发器标签中,启用启用持续集成

这时,在请求请求之后,来自功能分支的更改将合并到目标分支中。然后,它将触发CI构建。构建成功后,将生成工件并触发CD发行。该版本将采用这些工件并将其分阶段部署。

答案 1 :(得分:-1)

根据我的研究,Azure DevOps没有选择在发布级别获取build-id的选项。
您可以在构建队列中获取build-id。
如果要在发行版中使用相同的报告,则可以在构建中调用工作项Rest API,将结果存储在文件中并将结果文件推送到Artifacts或存储中。
然后,您可以从工件或存储中的发行版中扫描结果文件。