【发布时间】:2020-03-19 10:42:44
【问题描述】:
“下载构建工件”任务具有输出变量 BuildNumber,它可以获取从中下载工件的构建的 ID。新的“下载管道工件”任务(优先于“下载构建工件”)没有任何输出变量。有没有办法获取从中下载工件的构建的 ID?
还在 GitHub 上发布了issue。
【问题讨论】:
标签: azure-devops azure-pipelines
“下载构建工件”任务具有输出变量 BuildNumber,它可以获取从中下载工件的构建的 ID。新的“下载管道工件”任务(优先于“下载构建工件”)没有任何输出变量。有没有办法获取从中下载工件的构建的 ID?
还在 GitHub 上发布了issue。
【问题讨论】:
标签: azure-devops azure-pipelines
微软即将release a fix。
【讨论】:
有一种解决方法可以使用 restful api 获取下载的工件的构建 ID。
获取特定版本的BuildId。您可以参考下面的示例。 首先在您的管道中添加一个 powershell 任务以在下面的脚本中运行。
要获取定义 id 提供的定义名称(定义 id 将在以下脚本中使用),请查看 here 以获取其余 API。
$urldefinition ="https://dev.azure.com/<org>/<proj>/_apis/build/definitions?name=AboutSite-ASP.NET-CI&api-version=5.1"
$result = Invoke-RestMethod -Uri $urldefinition -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Method Get
$definition= $result.value
$definitionId = $definition[0].id
然后您可以使用以下脚本获取构建 ID:
$url="https://dev.azure.com/<org>/<proj>/_apis/build/builds?definitions=$definitionId&buildNumber=20191109AboutSite-ASP.NET-CI&statusFilter=completed&resultFilter=succeeded&api-version=5.1"
$result = Invoke-RestMethod -Uri $urldefinition -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Method Get
$build = $result.value
$id = $build[0].id
然后您可以输出以下任务的 buildid 以与以下脚本一起使用:
echo "##vso[task.setvariable variable=ArtifactBuildId;isOutput=true]$id"
要获取最新的构建 ID,您可以简单地使用下面的 api
GET https://dev.azure.com/{organization}/{project}/_apis/build/latest/{definition}?branchName={branchName}&api-version=5.1-preview.1
【讨论】:
definition,buildVersionToDownload,branchName,artifactName etc,计算下载哪个工件。您可以在其余 api 中使用这些输入来使用 powershell 脚本获取工件的构建 ID。