2016-11-11 111 views
0

我試圖在部署期間使用OctopusDeploy替換#{port}變量。我能做到這一點,如果我直接在我的App.Config中添加它如下:OctopusDeploy中的變量替換

<services> 
    <service name="SampleService" behaviorConfiguration="ServiceBehaviour"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:#{port}/SampleService/" /> 
     </baseAddresses> 
    </host> 
    .. 
    </service> 

有沒有一種方法,我可以添加一個默認端口這裏(25555說,這樣開發人員可以使用它總是沒有替換#{端口}),但仍然指定OctopusDeploy這個特定的端口已被修改? (我正在使用多租戶部署)

回答

1

您可以將配置文件的XML轉換功能與Octopus deploy結合使用。

八達通本身可以運行這些轉換。當你編譯你的代碼時,app.config被重命名爲[applicationName].exe.config如果你創建一個名爲[applicationName].exe.release.config的文件並將其添加到你的包中,那麼你可以使用相同風格的轉換,你通常在web.config中使用變換,在那個文件中。如果Octopus看到一個名爲*.release.config的文件,它將在部署過程中運行任何轉換。

或者This blog包含擴展項目的說明,以便您可以使用app.config文件中web.config文件的轉換能力。

所以你可以用幾種方法做到這一點。把你的硬編碼值「base」app.config然後把Octopus變量作爲app.release.config中的一個變換。當你構建和打包你的代碼時,只要你使用「release」配置,轉換就會觸發,硬編碼值將被你的構建所取代並被添加到包中。

或者你可以反過來,在app.debug.config和app.config中的Octopus變量中有硬編碼的值。當開發人員運行調試版本時,變量將被debug.config中的值替換。

+0

謝謝,我用app.config轉換自己和OctopusDeploy的替代變量.. – Narayana

0

八達通支持的變量替換(文檔:http://docs.octopusdeploy.com/display/OD/Variable+Substitution+Syntaxifunless

這意味着你可以申請一個默認的相對容易。

首先,如果變量存在,使用它:

#{if port}#{port}#{/if} 

其次,如果變量不存在,使用默認:

#{unless port}25555#{/unless} 

所以只要將它們組合在一起:

#{if port}#{port}#{/if}#{unless port}25555#{/unless}