【问题标题】:Azure DevOps Release Pipeline Variable Nested/Composed/ExpressionAzure DevOps 发布管道变量嵌套/组合/表达式
【发布时间】:2019-06-27 16:43:56
【问题描述】:

我有一个带有变量的发布管道,但似乎没有任何方法可以将该变量的值设置为在发布时评估的值。例如,另一个变量。

这是一个真实的例子:

我要做的就是将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。这可能与您对变量的使用有关。您可以根据实际使用情况更新您的问题吗?
  • 这就是我的想法,但据我所知,它不起作用。这只适用于构建管道而不是发布,还是应该相同?
  • 是一样的。我一直都这样做。我正在现在开发执行此操作的发布定义。
  • 嗯。行。不知道我做错了什么。是不是我正在使用变量组中的变量,我启用了复选框以允许访问所有管道?即它是一种继承的而不是显式导入到管道中的?
  • @DanielMann 在玩了一些之后,我可以确认就是这样!如果我“链接”管道中的变量组,它就可以工作。如果我“取消链接”它停止工作的变量组,我只会得到文字名称$(MyOtherVariable),即使我可以直接在管道任务中使用相同的变量 - 它只是在管道变量屏幕中不起作用。掌心。

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline azure-keyvault


【解决方案1】:

如何在发布管道变量中使用另一个变量的值?

正如我测试的那样,你设置的应该是有效的。您可以尝试按照以下步骤检查是否仍然存在此问题:

  • 创建一个新的发布管道没有链接任何变量组。
  • 如下设置变量:

  • 添加 Run Inline Powershell 任务以输出变量的值:

    Write-Output 'The value of MyExpressionBasedVariable is $(MyExpressionBasedVariable)'
    
    Write-Output 'The value of $(MyOtherVariable) is $(MyOtherVariable)'
    

然后我们可以得到日志:

所以,你设置的应该是有效的,如果这仍然不适合你,那么你需要确保你在问题中描述的变量是你实际测试的变量

此外,目前,构建/发布管道尚不支持嵌套变量的值(如$(TestVar_$(Release.Reason)),请查看this thread一些细节,所以确保你的项目中没有这样的嵌套变量。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 2021-11-23
    • 2021-06-24
    相关资源
    最近更新 更多