首页 > 解决方案 > REST API,从 CD 发布管道获取工作项 ID

问题描述

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

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

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

有任何想法吗?也许这个 API 只在 CI 构建管道中使用?非常感谢。

编辑

我从CD 管道的Initialize Job日志中获得了 Build ID 并添加了一个变量$(Release.Artifacts.ALIASNAME.BuildID)

在此处输入图像描述

标签: azure-devopsazure-pipelinesazure-devops-rest-api

解决方案


也许这个 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 的结果:

在此处输入图像描述

更新:

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

在此处输入图像描述

更新2:

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

另外,对于发布的来源,请选择相关的Build。在构建定义的触发选项卡中,请启用启用持续集成

此时,在拉取请求之后,来自特性分支的更改将合并到目标分支中。然后,它将触发 CI 构建。构建成功后,工件将生成并触发 CD 发布。该版本将采用此工件并将其部署到各个阶段。


推荐阅读