Мы тестируем Octopus Deploy, поэтому мы создали образец файла web.config, который мы установили и преобразовали в разных средах. Преобразование web.config и использование пользовательской переменной работают нормально, но я не могу заменить встроенные переменные Octopus. Вот пример из раздела XML в web.config:Как указать встроенные имена переменных Octopus в файле конфигурации 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["Octopus.Environment.Name"]" />
<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["Octopus.Environment.Name"]" />
<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 не заменяются. Любая идея почему?
Спасибо за ответ. Теперь я понимаю. Хотя это, безусловно, работает, я считаю, что возможность заменить атрибут «значение» (фактически - любой) более гибким, поэтому было бы здорово, если бы оно могло быть реализовано. Использование имени переменной Octopus в атрибуте «ключ» перетаскивает имена переменных Octopus в исходном коде, и я бы предпочел избежать этого. –
Спасибо - предложение @Declan McNulty ниже показывает, как вы можете использовать переменную Octopus с пользовательской. (+1 Declan :)) –
Да, именно так мы решили сделать это в настоящее время. Благодаря! –