【问题标题】:Updating environment variable on Azure DevOps在 Azure DevOps 上更新环境变量
【发布时间】:2020-01-15 03:42:28
【问题描述】:

在 Azure DevOps 管道中,如何更新变量组中的环境变量,使新值保持不变,即使在构建完成后也可以使用新值。

例如,我正在尝试保存新版本号,这不起作用:

Write-Host "##vso[task.setvariable variable=currentVersion]$newVersion"

【问题讨论】:

  • 如果你使用Write-Output而不是Write-Host,你有更好的结果吗?我在文档中没有看到以这种方式使用 Write-Host 的任何示例。
  • 如果您希望使用新值永久更新变量组,则需要使用 REST API 更新变量组。请参阅 REST API 文档。
  • @DanielMann 有没有办法以任何方式从 Azure DevOps 上的 CD 写入持久值?
  • @Andrija 不是。您可以提出的任何解决方案都有可能出现竞争条件,因为多个构建和/或发布可以同时运行。需要保留这样的信息通常表明您做错了。

标签: powershell azure-devops


【解决方案1】:

如何更新变量组中的环境变量,使新值保持不变,这样即使在构建完成后也可以使用新值。

恐怕没有这种方法可以更新变量组中的环境变量并在构建完成后保持它。

当你使用Logging Command设置变量时,即环境变量,只能在当前环境下工作。

所以构建完成后新值不能使用。

另一方面,正如丹尼尔所说,如果我们写入任何持久值,那么该值将与变量组中的值竞争/冲突。编译器将不知道选择哪个值。

所以,如果要写入任何持久值,我们必须手动更新变量组中的值,或者使用 REST API 更新变量组中的值。

查看How to modify Azure DevOps release definition variable from a release task? 了解更多详情。

希望这会有所帮助。

【讨论】:

  • 谢谢你的回答,它解释了很多。我放弃了设置永久值,并且在部署中使用了不同的技术。
【解决方案2】:

是的,您可以在构建期间进行更新,但 Write-Host 仅保留在当前运行的管道中。您可以使用 Azure CLI 并调用如下内容:

echo %AZ_LOGIN_PAT%|az devops login

az pipelines variable-group variable update --group-id variable_id --org https://dev.azure.com/your_org --project your_project --name VariableName --value %NewValue%

PAT 可能能够得到更好的保护,但我就是这样做的。这是一个 Windows 内联命令任务。

【讨论】:

    猜你喜欢
    • 2020-04-02
    • 1970-01-01
    • 2019-05-26
    • 2020-06-21
    • 2022-01-23
    • 2021-09-13
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    相关资源
    最近更新 更多