【发布时间】:2019-11-27 00:07:55
【问题描述】:
我写了一个小 PowerShell 脚本,它是一个发布定义。在那个定义上,我定义了一些变量。既有范围发布,也有针对特定环境的范围。当我现在得到定义时,这些变量不包括在内。最终目标是能够使用 API 更改变量值。
* 更新 *
Merlin Liang 完全正确。我只是没有正确打印结果。
这是我给其他人的代码:
$VariableValue = "test"
$VariableName = "test"
## Construct a basic auth head using PAT
function BasicAuthHeader()
{
$ba = (":{0}" -f $env:SYSTEM_ACCESSTOKEN)
$ba = [System.Text.Encoding]::UTF8.GetBytes($ba)
$ba = [System.Convert]::ToBase64String($ba)
$h = @{Authorization=("Basic{0}" -f $ba);ContentType="application/json"}
return $h
}
$h = BasicAuthHeader
$baseRMUri = $env:SYSTEM_TEAMFOUNDATIONSERVERURI + $env:SYSTEM_TEAMPROJECT
$releaseId = $env:RELEASE_RELEASEID
$getReleaseUri = $baseRMUri + "/_apis/release/definitions/30?api-version=5.1"
$release = Invoke-RestMethod -Uri $getReleaseUri -Headers $h -Method Get
# write-host "results = $($release | ConvertTo-Json -Depth 100)"
$release2 = $release | ConvertTo-Json -Depth 100 | ConvertFrom-JSON
$release2.variables.($VariableName).value = $VariableValue
$release2 = [Text.Encoding]::UTF8.GetBytes(($release2 | ConvertTo-Json -Depth 100))
$updateReleaseUri = $baseRMUri + "/_apis/release/definitions/30?api-version=5.1"
$content2 = Invoke-RestMethod -Uri $updateReleaseUri -Method Put -Headers $h -ContentType "application/json" -Body $release2 -Verbose -Debug
【问题讨论】:
-
你在使用 Azure DevOps 吗? TFS?如果是 TFS,什么版本的 TFS?变量包含在版本定义中,但请注意 secrets 是空白的。
-
我正在使用 Azure DevOps,变量不是秘密
标签: azure-devops azure-devops-rest-api