REST API,从 CD 发布管道获取工作项 ID
REST API, Get Work Item ID from CD Release Pipeline
在 Azure DevOps 中,我有一个 CI 生成工件的管道。一旦合并请求获得批准,它就会触发 CD 发布管道。在 CD 管道中,我添加了一个 PowerShell 任务来执行一些 REST API 功能。
我想从 CI 阶段构建的工件中检索关联的工作项 ID。
我通过输入构建 ID(32 个字符,例如 de5017b5bf537a92397f54f5570783bf32cc6bf)来使用此 API,但结果是:404 - 找不到页面。
有什么想法吗?也许这个 API 仅用于 CI 构建管道?非常感谢。
编辑
我从 CD 管道的 Initialize Job 日志中获取了构建 ID,并添加了一个变量 $(Release.Artifacts.ALIASNAME.BuildID)
。
Maybe this API is used only in the CI build pipeline?
不,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
为本次发布相关build的环境变量。
在此管道的日志中,您将看到 API 的结果:
更新:
我尝试从后端检查您的日志详细信息,但发现错误。在初始化作业的日志中,您可以看到构建定义名称与您的存储库名称相同。这意味着此版本的来源是 Repository 而不是 Build:
更新2:
如果你想在PR完成后触发这个release,请selectContinuous deployment trigger在release的trigger类型中。对于拉取请求,完成意味着允许更改合并到目标分支中。这是持续部署触发器和持续集成的前提。
另外,对于发布源,请选择相关的Build。在构建定义的 Trigger 选项卡中,请启用 Enable continuous integration.
此时在pull request之后,feature分支的变更会合并到target分支。然后,它将触发 CI 构建。构建成功后,将生成工件并触发 CD 释放。该版本将采用此工件并将其部署到各个阶段。
在 Azure DevOps 中,我有一个 CI 生成工件的管道。一旦合并请求获得批准,它就会触发 CD 发布管道。在 CD 管道中,我添加了一个 PowerShell 任务来执行一些 REST API 功能。
我想从 CI 阶段构建的工件中检索关联的工作项 ID。
我通过输入构建 ID(32 个字符,例如 de5017b5bf537a92397f54f5570783bf32cc6bf)来使用此 API,但结果是:404 - 找不到页面。
有什么想法吗?也许这个 API 仅用于 CI 构建管道?非常感谢。
编辑
我从 CD 管道的 Initialize Job 日志中获取了构建 ID,并添加了一个变量 $(Release.Artifacts.ALIASNAME.BuildID)
。
Maybe this API is used only in the CI build pipeline?
不,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
为本次发布相关build的环境变量。
在此管道的日志中,您将看到 API 的结果:
更新:
我尝试从后端检查您的日志详细信息,但发现错误。在初始化作业的日志中,您可以看到构建定义名称与您的存储库名称相同。这意味着此版本的来源是 Repository 而不是 Build:
更新2:
如果你想在PR完成后触发这个release,请selectContinuous deployment trigger在release的trigger类型中。对于拉取请求,完成意味着允许更改合并到目标分支中。这是持续部署触发器和持续集成的前提。
另外,对于发布源,请选择相关的Build。在构建定义的 Trigger 选项卡中,请启用 Enable continuous integration.
此时在pull request之后,feature分支的变更会合并到target分支。然后,它将触发 CI 构建。构建成功后,将生成工件并触发 CD 释放。该版本将采用此工件并将其部署到各个阶段。