【问题标题】:How to GET variables used in a specific BUILD in Azure Devops / TFS via api如何通过 api 获取 Azure Devops / TFS 中特定 BUILD 中使用的变量
【发布时间】:2019-12-21 07:27:45
【问题描述】:

在 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

当前代码的结果会创建一个版本,但不传递自定义变量(或从已完成的构建中获取自定义变量)。我宁愿传递或收获它们,也不愿重新计算它们。

【问题讨论】:

标签: powershell tfs azure-devops powershell-2.0 psobject


【解决方案1】:

首先,正如您在评论中提到的,在部署版本时无法直接更改变量。作为路线图上的用户声音:

部署发布时更改发布变量的值

https://developercommunity.visualstudio.com/idea/365596/change-release-variables-value-when-deploy-a-relea.html.

根据您的描述,您似乎想从 Release 定义中访问 Build 变量。目前这也不是内置功能。

作为一种解决方法,请尝试使用此第 3 方 Azure DevOps 扩展 Variable Tools for Azure DevOps Services

在“构建管道”中,您可以使用“保存变量”创建 JSON 文件。此文件需要作为工件发布或与现有工件一起发布。

在“发布管道”中,您可以使用 JSON 文件中的“加载变量”恢复变量。

另一种方法是将变量的值存储在Variable Group 中,并将变量组链接到您的发布定义中。

发布时,可以先获取变量组,过滤变量group-$(Build.BuildId)下的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-05
    • 2018-02-03
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多