使用REST API Azure devop传递变量组名称

时间:2019-12-04 09:52:28

标签: powershell azure-devops azure-pipelines azure-devops-rest-api azure-pipelines-release-task

是否可以使用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定义以传递变量组是一种好习惯吗?

2 个答案:

答案 0 :(得分:1)

  

是否可以通过任何方式传递变量组而无需编辑发行版定义

恐怕没有这样的方式来传递Variablegroup 而不编辑发布定义。

要将Variablegroup名称传递到版本定义,我们必须使用 Put 请求来更新定义。由于没有选项/ REST API,因此我们在运行发布管道时可以用来更新定义。

如果您不想修改原始定义,则可以在原始定义中获得Variablegroup名称,然后使用上述REST API添加/更新Variablegroup名称。在发布流程的最后,我们可以再次在REST API之上调用以恢复原始定义中的Variablegroup名称。

此外,如果添加的变量组中的变量不多,则可以在发布管道中使用Logging Command覆盖变量,这不会更改原始定义。

Write-Host "##vso[task.setvariable variable=testvar;]testvalue"

更新

  

如何在发布管道之外使用此日志记录命令进行修改   变量组?

答案是否定的。 因为创建发布管道时我们无法更新变量组,所以只显示了发布变量:

enter image description here

希望这会有所帮助。

答案 1 :(得分:0)

您在获取时使用了相同的$defurl,然后是帖子。帖子试图对定义api doc src执行更新,因此此代码将始终更新发布定义。

我认为您正在寻找的端点是release -> Create,它将开始新的部署。我尚未使用此端点修改变量组,但已覆盖特定的变量,如果没有弹出更好的答案,则会尝试在我的答案中添加一些代码。

我发现使用提琴手检查Web gui发送的REST调用有助于我弄清楚我的json主体需要什么样。