Azure DevOps发布流水线变量嵌套/组合/表达式

5
我有一个带有变量的发布流水线,但似乎没有任何方法可以将该变量的值设置为在发布时评估的内容,例如另一个变量。以下是一个真实的例子:

enter image description here

我想做的就是将MyExpressionBasedVariable的值设置为MyOtherVariable的值。
所有在线文档和示例都表明这是可能的,但我无法使其工作。我最终总是得到字面字符串而不是计算出的值。
我尝试使用以下不同的语法:
  • $(MyOtherVariable)
  • $[variables['MyOtherVariable']]
  • ${{variables['MyOtherVariable']}}
我看到可以定义自定义任务来设置变量名称作为管道的一部分,但这似乎过于复杂。
本质上,我只想将密钥库中的密钥重命名为不同的变量名称,以进行基于约定的XML变量替换。
例如,我有一个名为this-is-a-secret-name-which-is-a-different-naming-convention-to-my-connectionstrings的密码,但我需要在名为MySecret-ConnectionString的变量中使用它。
如何在发布管道变量中使用另一个变量的值?

您不需要做任何特殊的事情。Foo = $(Bar)Bar = Baz 将导致 Foo = Baz。这可能与您使用变量有关。您能否更新您的问题并提供实际使用情况? - Daniel Mann
那是我想的,但据我所知它不起作用。它只适用于构建流水线而不是发布吗?还是应该是一样的? - theyetiman
一样的。我经常这么做。我现在正在处理能够实现这个功能的发布定义。 - Daniel Mann
嗯,好的。不确定我做错了什么。可能是因为我正在使用一个变量组中的变量,其中我启用了允许访问所有管道的复选框?也就是说,它是继承而来的,而不是显式导入到管道中? - theyetiman
@DanielMann 经过一些尝试,我可以确认这就是问题所在!如果我在管道中“链接”变量组,它可以工作。如果我在变量组中“取消链接”,它就无法工作,我只能得到文字名称 $(MyOtherVariable) ,即使我在管道任务中可以直接使用同一变量 - 它在管道变量界面中仍然无法工作。脸掌。 - theyetiman
1个回答

4

如何在发布流水线变量中使用另一个变量的值?

根据我的测试,您设置的应该可以正常工作。您可以尝试按照以下步骤检查是否仍然存在此问题:

  • Create a new release pipeline without link any variable group.
  • Set the Variable like following:

    enter image description here

  • Add a Run Inline Powershell task to output the value of the Variable:

    Write-Output 'The value of MyExpressionBasedVariable is $(MyExpressionBasedVariable)'
    
    Write-Output 'The value of $(MyOtherVariable) is $(MyOtherVariable)'
    
然后我们可以获得日志:

enter image description here

所以,如果您设置的内容仍然无法正常工作,那么您需要确保在问题中描述的变量是实际测试中使用的变量。此外,在此时,嵌套变量的值(例如$(TestVar_$(Release.Reason)))在构建/发布管道中尚不受支持,请检查this thread了解一些详情,因此请确保项目中没有此类嵌套变量。希望这可以帮助您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接