繁体   English   中英

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

[英]Pass a Variable group name using REST API Azure devops

有没有办法在不编辑发布定义的情况下使用 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

但问题是“ Put ”请求更新原始定义。 有没有办法在不编辑发布定义的情况下传递变量组。 这是一种动态编辑发布定义以传递变量组的好习惯吗?

有没有办法在不编辑发布定义的情况下传递变量组

恐怕没有这种方法可以在编辑发布定义的情况下传递Variablegroup

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

如果您不想修改原始定义,您可以在原始定义中获取Variablegroup名称,然后使用上面的 REST API 添加/更新Variablegroup名称。 在发布管道的末尾,我们可以再次调用上面的 REST API 来恢复原始定义中的Variablegroup名称。

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

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

更新:

如何在发布管道外使用这个日志命令来修改变量组???

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

在此处输入图片说明

希望这可以帮助。

您使用相同的$defurl与 get 和 post。 该帖子试图对定义api doc src执行更新,因此此代码将始终更新发布定义。

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

我发现使用 fiddler 检查 web gui 发送的 REST 调用帮助我弄清楚我的 json body 需要看起来像什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM