【问题标题】:REST API, Get Work Item ID from CD Release PipelineREST API,从 CD 发布管道获取工作项 ID
【发布时间】:2019-12-09 22:23:32
【问题描述】:

在 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)

【问题讨论】:

  • 您能否发布您的Invoke-RestMethod sn-p 和完整的$url 参数,看看这里发生了什么?
  • @MarTin 是的,这是url
  • 构建 id 不应该是 32 个字符,从哪里获取?
  • @ShaykiAbramczyk,我用我的回复和截图编辑了原始帖子。

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


【解决方案1】:

也许这个 API 只在 CI 构建管道中使用?

不,API 不仅限于构建管道。也可以在release中使用。

由于您没有分享有关 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 发布。该版本将采用此工件并将其部署到各个阶段。

【讨论】:

  • 对于URL,也可以使用预定义的发布变量:$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build/builds/$(Release.Artifacts.ALIASNAME.BuildId)/workitems?api-version=5.0"
  • @naregkar 在第一行试试:buildId="$(build.buildid)" (with " ")
  • 好的。这是有道理。那是因为您的来源是 repos 而不是 build。这就是为什么当我从后端检查您的发布日志时,我在您的发布初始化日志中没有找到BUILD_BUILDURI
  • 这应该是这个问题的根本原因。
  • 当您使用 pr 触发发布时,发布的工件是提交而不是来自构建的工件。你可以在one release record的页面看到这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多