在所有版本定义中更改变量的值

时间:2019-02-13 11:33:09

标签: tfs release devops tfs2015

我正在使用TFS 2015。 在所有版本定义(大约100个)中,我都定义了带有值的变量“数据库名称”。现在,我需要更改所有发行版定义的值,所以请您告诉我如何完成此操作。 TFS 2015中没有可变组。我在线阅读了多个文档,但未找到任何解决方案。

2 个答案:

答案 0 :(得分:0)

我不确定tfs 2015是否支持此版本的REST API。但您可以尝试:

  1. 获取版本定义列表:Definitions - List

请先检查此步骤。将网址粘贴到浏览器中:

http://your_server:port/tfs/{collection_name}/{project}/_apis/release/definitions?api-version=3.0
  1. 获取一个发布定义:Definitions - Get
  2. 更新现有的版本定义(变量成员):Definitions - Update

我已经在tfs 2015服务器上获得了发布的定义: 我的发布定义:

enter image description here

TFS的Json:

enter image description here

答案 1 :(得分:0)

您可以使用以下脚本来更改所需的每个变量:

$tfsUrl = "http://ServerName:Port/tfs/CollectionName/ProjectName"
$releaseDefurl = $tfsUrl + '/_apis/release/definitions?$expand=artifacts&api-version=3.2-preview.3'

$Env = "Environment Name"
$VariableName = "Variable Name"

$allreleaseDef = (Invoke-RestMethod -Uri ($releaseDefurl) -Method Get -UseDefaultCredentials).value |  Where-Object {$_.name -like "*Release Name*"} | select id,name

foreach ($release in $allreleaseDef)
{
    $ReleaseInfo = Invoke-RestMethod -Uri "$tfsUrl/_apis/Release/definitions/$($release.id)" -Method Get -UseDefaultCredentials

    ($ReleaseInfo.environments | where name -eq "$Env").variables.$VariableName.value = "NEW VALUE"

    $json  = $ReleaseInfo | ConvertTo-Json -depth 100

    Invoke-RestMethod -Uri "$tfsUrl/_apis/release/definitions/$($release.id)?api-version=3.2-preview.3" -Method Put -UseDefaultCredentials -ContentType "application/json" -Body $json 

}