未在表达式中求值的Azure默认变量

时间:2019-10-11 01:57:27

标签: azure azure-devops azure-pipelines

在构建过程中,我需要查找一些变量并将其替换到配置文件中。我正在使用vsts-regex-tasks来做到这一点。它适用于用户创建的变量,但是当尝试引用Azure defined variables时,似乎未对该变量求值。有任何想法吗?

Example
Find: "RELEASE_NAME"
Replace With: "$(Release.ReleaseName)"
Result: "$(Release.ReleaseName)"

编辑:

我正在尝试在构建管道中使用Release变量,而我正在使用的插件无法读取任何Azure定义的变量,因此切换到“替换令牌”的过程非常吸引人,并减少了替换的构建步骤数量多个变量。

1 个答案:

答案 0 :(得分:1)

首先,如果您以前使用带有变量$(Release.ReleaseName)的表达式的方法位于 YAML 中,请害怕说在YAML定义中不能使用发布变量。尽管我们将发布定义集成到了YAML中,但是实际上,它的环境仍然属于 Build

请参见以下doc中的说明

enter image description here

所有这些发行变量仅可用于经典发行渠道。

当您尝试使用 YAML 定义和配置发布管道时,只能用doc中列出的变量作为短语。

enter image description here


但是,如果您使用的配置类型是经典而不是YAML,则应首先检查搜索输入文件的路径的值。通常,可以从日志中检查所有问题。

这里我的项目是一个Jmeter测试项目,其配置文件是WebservicePerformanceTest.jmx。现在,我的示例将在此$(Release.ReleaseName)文件中将一个服务端口名称替换为.jmx

enter image description here

下面是我的本地发布结果,您可以看到它成功替换了变量。

enter image description here

此外,还有另一项任务也可以实现您想要的:Replace token。有关使用的详细步骤,请参阅my previous answer