我正在使用TFS 2015。 在所有版本定义(大约100个)中,我都定义了带有值的变量“数据库名称”。现在,我需要更改所有发行版定义的值,所以请您告诉我如何完成此操作。 TFS 2015中没有可变组。我在线阅读了多个文档,但未找到任何解决方案。
答案 0 :(得分:0)
我不确定tfs 2015是否支持此版本的REST API。但您可以尝试:
请先检查此步骤。将网址粘贴到浏览器中:
http://your_server:port/tfs/{collection_name}/{project}/_apis/release/definitions?api-version=3.0
我已经在tfs 2015服务器上获得了发布的定义: 我的发布定义:
TFS的Json:
答案 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
}