【问题标题】:Pass a Variable group name using REST API Azure devops使用 REST API Azure devops 传递变量组名称
【发布时间】:2020-03-29 02:05:09
【问题描述】:

有没有办法使用 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”请求更新原始定义。有没有办法在不编辑发布定义的情况下传递变量组。这是动态编辑发布定义以传递变量组的好习惯吗?

【问题讨论】:

  • 你能告诉我们$definition 长什么样吗?
  • $definition 是一个 Json 对象
  • 我明白了,但我的意思是:您正在使用$def.variableGroups="VariableGroupName" 更新定义。您不应该将$def 转换为json 并在下一次Invoke-RestMethod 调用而不是$definition 中使用它吗?
  • 是的,对不起,错字我的问题是我想传递变量而不更新\编辑定义
  • 我发现 web gui 中的大多数(全部?)操作都调用了 REST api,因此当您在 web 中手动执行操作时,您可以使用 fiddler 来捕获浏览器所做的调用gui,并检查 json 在那里的样子,这可能会给你一些见解。

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


【解决方案1】:

有什么方法可以在不编辑发布定义的情况下传递变量组

恐怕没有这种方法可以通过Variablegroup 编辑发布定义。

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

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

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

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

更新:

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

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

希望这会有所帮助。

【讨论】:

  • 如何在发布管道之外使用这个日志命令来修改变量组???
  • @tjdoubts,如果您想在发布管道之外使用此日志记录命令来修改变量组,恐怕答案是否定的,您可以查看我更新的答案以获取更多详细信息。跨度>
  • @tjdoubts,同样,如果以上答案解决了您的问题,如果是,您可以接受它作为答案,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档此线程, 谢谢。如果没有,请告诉我们您是否需要进一步的帮助。
【解决方案2】:

您使用的是相同的$defurl,先是get,然后是post。该帖子正在尝试对定义 api doc src 执行更新,因此此代码将始终更新发布定义。

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

我发现使用 fiddler 检查 web gui 发送的 REST 调用可以帮助我准确了解我的 json 主体的外观。

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2022-07-17
    • 2020-06-12
    • 2020-04-03
    相关资源
    最近更新 更多