繁体   English   中英

如何在XML配置文件中指定Octopus内置变量名?

[英]How to specify Octopus built-in variable names in an XML configuration file?

我们正在测试Octopus Deploy,因此我们制作了一个示例web.config文件,我们在不同的环境中安装和转换。 web.config转换和使用自定义变量工作正常,但我无法获得内置的Octopus变量来替换。 以下是web.config中XML部分的示例:

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="environmentTransform" value="" />
    <add key="EnvironmentVariable1" value="$OctopusEnvironmentName" />
    <add key="EnvironmentVariable2" value="$(OctopusEnvironmentName)" />
    <add key="EnvironmentVariable3" value="$(Octopus.Environment.Name)" />
    <add key="EnvironmentVariable4" value="$Octopus.Environment.Name)" />
    <add key="EnvironmentVariable5" value="$OctopusParameters[&quot;Octopus.Environment.Name&quot;]" />
    <add key="MachineVariable1" value="$Octopus.Machine.Name" />
    <add key="MachineVariable2" value="#(Octopus.Machine.Name)" />
    <add key="MachineVariable3" value="#OctopusMachineName" />
    <add key="CustomVariable" value="CustomVariable" />
  </appSettings>

这里的web.Dev.config,以环境命名:

  <appSettings>
    <add key="environmentTransform" value="Dev" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
  </appSettings>

这是结果:

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="environmentTransform" value="Dev" />
    <add key="EnvironmentVariable1" value="$OctopusEnvironmentName" />
    <add key="EnvironmentVariable2" value="$(OctopusEnvironmentName)" />
    <add key="EnvironmentVariable3" value="$(Octopus.Environment.Name)" />
    <add key="EnvironmentVariable4" value="$Octopus.Environment.Name)" />
    <add key="EnvironmentVariable5" value="$OctopusParameters[&quot;Octopus.Environment.Name&quot;]" />
    <add key="MachineVariable1" value="$Octopus.Machine.Name" />
    <add key="MachineVariable2" value="#(Octopus.Machine.Name)" />
    <add key="MachineVariable3" value="#OctopusMachineName" />
    <add key="CustomVariable" value="Value for maeaint01" />
  </appSettings>

如您所见,八达通变量未被替换。 知道为什么吗?

Octopus的配置文件变量替换仅适用于设置key ,而不适用于值。 如果您创建如下设置:

<add key="Octopus.Environment.Name" value="..." />

那么该value将在部署时设置。

你正在尝试使用其他方法当然是合理的,但不是Octopus目前如何使用配置文件。

我们使用新的解析器和新功能( #{if ...#{each and so-on)增强了我们在2.0中的变量替换处理 - 你的问题激励我起草这个可能更好地解决这个问题的提议

我发现我的.config文件不会内置变量自定义变量。

您可以做的是在名为EnvironmentVariable1的章鱼仪表板中设置变量并将其值设置为

#{OctopusEnvironmentName}

然后,这会将配置中的EnvironmentVariable1节点转换为您当前正在部署的环境名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM