在Azure DevOps中,我有一个生成工件的CI管道。一旦“拉取请求”获得批准,它将触发CD发行管道。在CD管道中,我添加了一个PowerShell任务来执行一些REST API功能。
我想从CI阶段构建的工件中检索关联的工作项ID。
我通过提供内部版本ID(例如32个字符,例如 de5017b5bf537a92397f54f5570783bf32cc6bf )来使用此API,但是结果是:404-找不到页面。
有什么想法吗?也许此API仅在CI构建管道中使用?非常感谢。
修改
我从CD管道的初始化作业日志中获得了构建ID,并添加了一个变量$(Release.Artifacts.ALIASNAME.BuildID)
。
答案 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的结果:
已更新:
我尝试从后端检查您的日志详细信息,并发现错误。在初始化作业的日志中,您可以看到构建定义名称与您的回购名称相同。这意味着此版本的源是存储库,而不是Build:
更新2:
如果要在PR完成后触发此版本,请在版本的触发类型中选择连续部署触发器。对于请求请求,完成意味着允许更改合并到目标分支中。这是持续部署触发器和持续集成的前提。
此外,对于发行版的来源,请选择相关的内部版本。在构建定义的触发器标签中,启用启用持续集成。
这时,在请求请求之后,来自功能分支的更改将合并到目标分支中。然后,它将触发CI构建。构建成功后,将生成工件并触发CD发行。该版本将采用这些工件并将其分阶段部署。
答案 1 :(得分:-1)
根据我的研究,Azure DevOps没有选择在发布级别获取build-id的选项。
您可以在构建队列中获取build-id。
如果要在发行版中使用相同的报告,则可以在构建中调用工作项Rest API,将结果存储在文件中并将结果文件推送到Artifacts或存储中。
然后,您可以从工件或存储中的发行版中扫描结果文件。