5

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 変数は置き換えられません。理由はありますか?

4

2 に答える 2

7

Octopus の構成ファイルの変数置換keyは、値ではなく設定でのみ機能します。次のような設定を作成した場合:

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

value展開時に設定されます。

もちろん、他のアプローチで試みていることは合理的ですが、Octopusが現在構成ファイルをどのように扱っているかはわかりません。

新しいパーサーと新しい機能 (#{if ...など#{each) を使用して、2.0 で変数置換処理を強化しました。あなたの質問に触発されて、この使用法により適切に対処できるこの提案を起草しました。

于 2014-01-23T02:42:29.613 に答える
2

.config ファイルが組み込み変数またはカスタム変数を取得しないことがわかりました。

あなたができることは、EnvironmentVariable1と呼ばれるoctopusダッシュボードで変数を設定し、その値を次のように設定することです

#{OctopusEnvironmentName}

これにより、構成内の EnvironmentVariable1 ノードが、現在デプロイしている環境名に変換されます。

于 2014-01-22T16:14:16.250 に答える