Octopus Deploy 可以有变量中的变量吗

Can Octopus Deploy have variables in variables

这是系统 Octopus 部署变量:

#{Octopus.Action[Deploy To Server].Output.Package.InstallationDirectoryPath}

文本“部署到服务器”是我的项目中将 Nuget 包部署到服务器的步骤的名称。此变量给出了 NugetPackage 的安装位置。

我想知道是否可以使它更通用:

#{Octopus.Action[#{DeploymentStep}].Output.Package.InstallationDirectoryPath}

#{DeploymentStep}本身就是一个变量,值为"Deploy to Server"?

我试过了,但它在尝试 运行 时没有进行替换。但我希望变量替换中的变量有不同的语法。

(我想这样做是为了将其设为步骤模板的默认值。)

可以做到;但是你需要使用稍微不同的语法!

变量替换语法: http://docs.octopusdeploy.com/display/OD/Variable+Substitution+Syntax

$deploymentStep = "#{DeploymentStep}"

$installationDirectory = $OctopusParameters["Octopus.Action[$deploymentStep].Output.Package.InstallationDirectoryPath"]

刚刚遇到了同样的问题,但通过一些测试,我让它在 1 班轮中工作。 您需要用美元将内部变量封装在括号中,并且您需要将变量中的双引号更改为单引号,这样它就不会抱怨引号不匹配。外双引号内单引号

下面的示例获取带有章鱼变量的步骤名称以及机器名称 运行 变量以生成结果:

$OctopusParameters["Octopus.Action[$($OctopusParameters['Octopus.Step.Name'])].Output[$($OctopusParameters['Octopus.Machine.Name'])].MyVarFromMachineFromStep"]