azure-devops - 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)
。
解决方案
也许这个 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 发布。该版本将采用此工件并将其部署到各个阶段。
推荐阅读
- microsoft-graph-api - 扩展和过滤 MS Graph API 不起作用
- spatstat - 在 spatstat 中为锥形点云创建 pp3 点模式
- javascript - 如何修复 phpmyadmin 中的日期错误 0000-00-00?
- c - 使用 GLUT 和 C 编写文本
- javascript - html中的外部javascript文件不起作用
- ios - 显示应用下载页面 Firebase 动态链接
- c++ - 将结构数组中的某个条目传递给函数
- r - 如何使用R从列表中的每个元素中选择同一列到一列中
- spring-boot - 是否可以以横向方式将对象注入模板?
- python - Python-crontab job.write() 导致 fileIO 错误