如何通过 api 获取 Azure Devops/TFS 中特定构建中使用的变量
How to GET variables used in a specific BUILD in Azure Devops / TFS via api
在 Azure Devops 的构建和发布管道中,我通过 api 触发其他管道。
我正在尝试让我的发布管道收集在关联构建期间发现/使用的自定义变量。
我能够通过 get api 获取构建列表,并且我能够生成其他构建并将参数传递给它们。
虽然我可以通过 api 生成一个版本,但我一直未能成功传递参数...或在创建版本时按需获取参数。
我查看了 Microsoft 的文档并成功地通过 api 使用自定义参数对构建进行了排队,并创建了没有自定义参数的版本。
[String]$buildID = "$env:BUILD_BUILDID"
[String]$project = "$env:SYSTEM_TEAMPROJECT"
[String]$projecturi = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"
[String]$alias = "drop"
$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
$url= $projecturi + $project + "/_apis/release/releases?api-version=5.0-preview"
$JSON = @"
{
"definitionId": 9,
"description": "Testing API Release",
"artifacts": [
{
"alias": "$alias",
"instanceReference": {
"id": "$buildID",
"name": null
}
}
],
"isDraft": false,
"reason": "none",
"manualEnvironments": null
}
"@
Write-Host $url
$responseRelease = Invoke-RestMethod -Uri $url -headers $headers -Method Post -ContentType "application/json" -Body $JSON
Write-Host $responseRelease
当前代码的结果创建了一个版本,但不传递自定义变量(或从已完成的构建中获取自定义变量)。我宁愿通过或收获它们,也不愿重新计算它们。
首先,正如您在评论中提到的,部署发布时无法直接更改变量。作为路线图上的用户声音:
Change release variables' value when deploy a release
根据您的描述,您似乎想从 Release 定义中访问 Build 变量。目前这也不是内置功能。
作为解决方法,请尝试使用此第 3 方 Azure DevOps 扩展 Variable Tools for Azure DevOps Services。
在 "build pipeline" 中,您可以使用 "save variables" 创建一个 JSON 文件。此文件需要作为工件或与现有工件一起发布。
在 "release pipeline" 中,您可以使用 JSON 文件中的 "load variables" 恢复变量。
另一种方法是将变量的值存储在 Variable Group 和 link 变量组中到您的发布定义中。
发布时,可以先获取变量组,过滤变量group-$(Build.BuildId)
下的变量。
在 Azure Devops 的构建和发布管道中,我通过 api 触发其他管道。
我正在尝试让我的发布管道收集在关联构建期间发现/使用的自定义变量。
我能够通过 get api 获取构建列表,并且我能够生成其他构建并将参数传递给它们。
虽然我可以通过 api 生成一个版本,但我一直未能成功传递参数...或在创建版本时按需获取参数。
我查看了 Microsoft 的文档并成功地通过 api 使用自定义参数对构建进行了排队,并创建了没有自定义参数的版本。
[String]$buildID = "$env:BUILD_BUILDID"
[String]$project = "$env:SYSTEM_TEAMPROJECT"
[String]$projecturi = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"
[String]$alias = "drop"
$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
$url= $projecturi + $project + "/_apis/release/releases?api-version=5.0-preview"
$JSON = @"
{
"definitionId": 9,
"description": "Testing API Release",
"artifacts": [
{
"alias": "$alias",
"instanceReference": {
"id": "$buildID",
"name": null
}
}
],
"isDraft": false,
"reason": "none",
"manualEnvironments": null
}
"@
Write-Host $url
$responseRelease = Invoke-RestMethod -Uri $url -headers $headers -Method Post -ContentType "application/json" -Body $JSON
Write-Host $responseRelease
当前代码的结果创建了一个版本,但不传递自定义变量(或从已完成的构建中获取自定义变量)。我宁愿通过或收获它们,也不愿重新计算它们。
首先,正如您在评论中提到的,部署发布时无法直接更改变量。作为路线图上的用户声音:
Change release variables' value when deploy a release
根据您的描述,您似乎想从 Release 定义中访问 Build 变量。目前这也不是内置功能。
作为解决方法,请尝试使用此第 3 方 Azure DevOps 扩展 Variable Tools for Azure DevOps Services。
在 "build pipeline" 中,您可以使用 "save variables" 创建一个 JSON 文件。此文件需要作为工件或与现有工件一起发布。
在 "release pipeline" 中,您可以使用 JSON 文件中的 "load variables" 恢复变量。
另一种方法是将变量的值存储在 Variable Group 和 link 变量组中到您的发布定义中。
发布时,可以先获取变量组,过滤变量group-$(Build.BuildId)
下的变量。