是否可以使用REST API将变量组名传递到发布管道,而无需编辑发布定义。
我可以使用以下内容
$defurl = "https://vsrm.dev.azure.com/org/proj/_apis/release/definitions/13?api-version=5.1"
$def = Invoke-RestMethod -Uri $defurl -Method Get -Headers $header
$def.variableGroups="VariableGroupName"
$json = @($def) | ConvertTo-Json -Depth 99
$udef = Invoke-RestMethod -Uri $defurl -Method Put -Body $json -ContentType "application/json" -Headers $header
但是问题是“ 放置”请求更新原始定义。有什么方法可以传递变量组而无需编辑发行版定义。即时编辑Release定义以传递变量组是一种好习惯吗?
答案 0 :(得分:1)
是否可以通过任何方式传递变量组而无需编辑发行版定义
恐怕没有这样的方式来传递Variablegroup
而不编辑发布定义。
要将Variablegroup
名称传递到版本定义,我们必须使用 Put 请求来更新定义。由于没有选项/ REST API,因此我们在运行发布管道时可以用来更新定义。
如果您不想修改原始定义,则可以在原始定义中获得Variablegroup
名称,然后使用上述REST API添加/更新Variablegroup
名称。在发布流程的最后,我们可以再次在REST API之上调用以恢复原始定义中的Variablegroup
名称。
此外,如果添加的变量组中的变量不多,则可以在发布管道中使用Logging Command覆盖变量,这不会更改原始定义。
Write-Host "##vso[task.setvariable variable=testvar;]testvalue"
更新:
如何在发布管道之外使用此日志记录命令进行修改 变量组?
答案是否定的。 因为创建发布管道时我们无法更新变量组,所以只显示了发布变量:
希望这会有所帮助。
答案 1 :(得分:0)
您在获取时使用了相同的$defurl
,然后是帖子。帖子试图对定义api doc src执行更新,因此此代码将始终更新发布定义。
我认为您正在寻找的端点是release -> Create,它将开始新的部署。我尚未使用此端点修改变量组,但已覆盖特定的变量,如果没有弹出更好的答案,则会尝试在我的答案中添加一些代码。
我发现使用提琴手检查Web gui发送的REST调用有助于我弄清楚我的json主体需要什么样。